df.groupby(['Month']).agg({'Status' : ['count']})
上面的行按Month
对数据框进行分组,并计算每个月Status
的数量。有没有一种方法只能计数Status=X
?类似于下面的错误代码:
df.groupby(['Month']).agg({'Status' == 'X' : ['count']})
本质上,我希望计算每个月有Status
个X
。
答案 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']})