Pandasgroupby和agg by condition

2024-04-20 02:02:50 发布

您现在位置:Python中文网/ 问答频道 /正文

df.groupby(['Month']).agg({'Status' : ['count']})

上面的行按Month对数据帧进行分组,并统计每个月Status的数量。有没有办法只在Status=X处得到一个计数?类似下面的错误代码:

df.groupby(['Month']).agg({'Status' == 'X' : ['count']})

基本上,我想计算每个月有多少个StatusX。你知道吗


Tags: 数据df数量statuscountagg计数groupby
3条回答

也可以使用lambda函数

df.groupby('Month').agg(lambda x: (x=='X').sum())

或者

df.groupby('Month').Status.agg(lambda x: (x=='X').sum())

很短的路

(df.Status == 'X').groupby(df.Month).sum()

很长的路

df.where(df.Status == 'X').groupby('Month').Status.count()

让我们做些不同的事情

pd.crosstab(df.Month,df.Status)['X']

相关问题 更多 >