Im working on trying to get the n most frequent items from a pandas dataframe similar to +----+-----+-------+------+------+------+| cod| name|sum_vol|  date|   lat|   lon|+----+-----+-------+------+------+------+|aggc|23124|     37|201610|-15.42|-32.11||aggc|23124|     19|201611|-15.42|-32.11|| abc|  231|     22|201610|-26.42|-43.11|| abc|  231|     22|201611|-26.42|-43.11|| ttx|  231|     10|201610|-22.42|-46.11|| ttx|  231|     10|201611|-22.42|-46.11|| tty|  231|     25|201610|-25.42|-42.11|| tty|  231|     45|201611|-25.42|-42.11||xptx|  124|     62|201611|-26.43|-43.21||xptx|  124|    260|201610|-26.43|-43.21||xptx|23124|     50|201610|-26.43|-43.21||xptx|23124|     50|201611|-26.43|-43.21|+----+-----+-------+------+------+------+Im able to do it using the following code:import pandas as pddf = pd.DataFrame({'cod':['aggc','abc'], 'name':[23124,23124],                   'sum_vol':[37,19], 'date':[201610,201611],                    'lat':[-15.42, -15.42], 'lon':[-32.11, -32.11]})gg = df.groupby(['name','date']).cod.value_counts().to_frame()gg = gg.rename(columns={'cod':'count_cod'}).reset_index()df_top_freq = gg.groupby(['name', 'date']).head(5)But this code is slow and very cumbersome. Is there a way to do it in a more flexible and straightforward way?
Select the n most frequent items from a pandas groupby dataframe
python;performance;pandas