【发布时间】:2018-11-05 19:56:03
【问题描述】:
我有一个类似于下面提到的数据库的数据框:
+------------+-----+--------+
| time | id | status |
+------------+-----+--------+
| 1451606400 | id1 | Yes |
| 1451606400 | id1 | Yes |
| 1456790400 | id2 | No |
| 1456790400 | id2 | Yes |
| 1456790400 | id2 | No |
+------------+-----+--------+
我按上面提到的所有列进行分组,我可以使用以下命令成功地在名为 'count' 的不同列中获取计数:
df.groupby(['time','id', 'status']).size().reset_index(name='count')
但我希望上述数据框中的计数仅出现在带有status = 'Yes' 的行中,其余的应该是'0'
期望的输出:
+------------+-----+--------+---------+
| time | id | status | count |
+------------+-----+--------+---------+
| 1451606400 | id1 | Yes | 2 |
| 1456790400 | id2 | Yes | 1 |
| 1456790400 | id2 | No | 0 |
+------------+-----+--------+---------+
我尝试使用以下代码计算status = 'Yes':
df[df['status']== 'Yes'].groupby(['time','id','status']).size().reset_index(name='count')
这显然给了我那些带有status = 'Yes' 的行并丢弃了其余的行。我想要那些带有count = 0的废弃的
有没有办法得到结果?
提前致谢!
【问题讨论】:
标签: python pandas dataframe pandas-groupby