Pandas - 在groupby中聚合,排序和引用

Ale*_*sev 6 python pandas

我有以下数据框:

                       some_id
2016-12-26 11:03:10        001
2016-12-26 11:03:13        001
2016-12-26 12:03:13        001
2016-12-26 12:03:13        008
2016-12-27 11:03:10        009
2016-12-27 11:03:13        009
2016-12-27 12:03:13        003
2016-12-27 12:03:13        011
Run Code Online (Sandbox Code Playgroud)

我需要做一些像transform('size')这样的事情,并进行以下排序并获得N max值.得到这样的东西(N = 2):

             some_id   size
2016-12-26       001      3
                 008      1
2016-12-27       009      2
                 003      1
Run Code Online (Sandbox Code Playgroud)

在panda 0.19.x中有优雅的方法吗?

Nic*_*eli 4

用于value_counts计算 . 部分分组后的不同date计数DateTimeIndex。默认情况下,这会按降序对它们进行排序。

您只需取该结果的最上面 2 行即可获得最大的 (top-2) 部分。

fnc = lambda x: x.value_counts().head(2)
grp = df.groupby(df.index.date)['some_id'].apply(fnc).reset_index(1, name='size')
grp.rename(columns={'level_1':'some_id'})
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述