熊猫groupby和agg按条件

时间:2019-11-07 01:26:27

标签: python pandas dataframe aggregate

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

上面的行按Month对数据框进行分组,并计算每个月Status的数量。有没有一种方法只能计数Status=X?类似于下面的错误代码:

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

本质上,我希望计算每个月有StatusX

4 个答案:

答案 0 :(得分:4)

一个简短的方法

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

很远

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

答案 1 :(得分:4)

让我们做些不同的事情

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

答案 2 :(得分:3)

还可以使用 lambda函数

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

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

答案 3 :(得分:1)

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