相关疑难解决方法(0)

pandas groupby在组内排序

我想将数据框分组为两列,然后对组内的聚合结果进行排序.

In [167]:
df

Out[167]:
count   job source
0   2   sales   A
1   4   sales   B
2   6   sales   C
3   3   sales   D
4   7   sales   E
5   5   market  A
6   3   market  B
7   2   market  C
8   4   market  D
9   1   market  E

In [168]:
df.groupby(['job','source']).agg({'count':sum})

Out[168]:
            count
job     source  
market  A   5
        B   3
        C   2
        D   4
        E   1
sales   A   2
        B   4
        C   6
        D   3
        E   7
Run Code Online (Sandbox Code Playgroud)

我现在想在每个组中按降序对count列进行排序.然后只占前三行.得到类似的东西:

            count
job …
Run Code Online (Sandbox Code Playgroud)

python sorting group-by pandas

131
推荐指数
5
解决办法
21万
查看次数

pandas groupby:每组的前 3 个值

pandas groupby中发布了一个新的更通用的问题:每个组中的前 3 个值并存储在 DataFrame 中,并且已在那里回答了一个可行的解决方案。

\n\n

在此示例中,我创建了一个数据框df,其中包含一些间隔 5 分钟的随机数据。\n我想创建一个数据框gdf分组 df),其中列出每小时的3 个最高值。

\n\n

即:从这一系列值

\n\n
                     VAL\nTIME                    \n2017-12-08 00:00:00   29\n2017-12-08 00:05:00   56\n2017-12-08 00:10:00   82\n2017-12-08 00:15:00   13\n2017-12-08 00:20:00   35\n2017-12-08 00:25:00   53\n2017-12-08 00:30:00   25\n2017-12-08 00:35:00   23\n2017-12-08 00:40:00   21\n2017-12-08 00:45:00   12\n2017-12-08 00:50:00   15\n2017-12-08 00:55:00    9\n2017-12-08 01:00:00   13\n2017-12-08 01:05:00   87\n2017-12-08 01:10:00    9\n2017-12-08 01:15:00   63\n2017-12-08 01:20:00   62\n2017-12-08 01:25:00   52\n2017-12-08 01:30:00   43\n2017-12-08 01:35:00   77\n2017-12-08 01:40:00   95\n2017-12-08 01:45:00   79\n2017-12-08 01:50:00   77\n2017-12-08 01:55:00    5\n2017-12-08 02:00:00   78\n2017-12-08 02:05:00   41\n2017-12-08 02:10:00   10\n2017-12-08 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas pandas-groupby

2
推荐指数
1
解决办法
4492
查看次数

标签 统计

pandas ×2

python ×2

dataframe ×1

group-by ×1

pandas-groupby ×1

sorting ×1