nov*_*ice 3 python aggregate dataframe pandas
df.groupby(['Month']).agg({'Status' : ['count']})
Run Code Online (Sandbox Code Playgroud)
上面的行将数据框分组Month并计算Status每个月的数量。有没有办法只得到一个计数在哪里Status=X?类似于下面不正确的代码:
df.groupby(['Month']).agg({'Status' == 'X' : ['count']})
Run Code Online (Sandbox Code Playgroud)
从本质上讲,我想多少计数Status是X每月。
也可以使用lambda函数
df.groupby('Month').agg(lambda x: (x=='X').sum())
Run Code Online (Sandbox Code Playgroud)
或者
df.groupby('Month').Status.agg(lambda x: (x=='X').sum())
Run Code Online (Sandbox Code Playgroud)
一条捷径
(df.Status == 'X').groupby(df.Month).sum()
Run Code Online (Sandbox Code Playgroud)
很长的路
df.where(df.Status == 'X').groupby('Month').Status.count()
Run Code Online (Sandbox Code Playgroud)
让我们做点不一样的
pd.crosstab(df.Month,df.Status)['X']
Run Code Online (Sandbox Code Playgroud)