PandasGroupby仅针对特定字符串值计算多列

我有一个这样的数据框

dummy = pd.DataFrame([
('01/09/2020', 'TRUE', 'FALSE'),
('01/09/2020', 'TRUE', 'TRUE'),
('02/09/2020', 'FALSE', 'TRUE'),
('02/09/2020', 'TRUE', 'FALSE'),
('03/09/2020', 'FALSE', 'FALSE'),
('03/09/2020', 'TRUE', 'TRUE'),
('03/09/2020', 'TRUE', 'FALSE')], columns=['date', 'Action1', 'Action2'])

现在我想要每天汇总 'TRUE' 动作,它应该看起来像

我应用了 group by、sum 和 count 等,但没有任何效果对我有用,因为我必须聚合多个列,而且我不想将表拆分为多个数据框并单独解析并合并为一个,有人可以提出建议吗聪明的方法来做到这一点。

回答

虚拟 df 中的 True 和 False 是字符串,您可以将它们转换为 int 和 sum

dummy.replace({'TRUE':1,'FALSE':0}).groupby('date',as_index = False).sum()

    date        Action1 Action2
0   01/09/2020  2       1
1   02/09/2020  1       1
2   03/09/2020  2       1


回答

你也可以试试:

dummy.set_index(['date']).eq('TRUE').sum(level='date')

输出:

            Action1  Action2
date                        
01/09/2020        2        1
02/09/2020        1        1
03/09/2020        2        1


以上是PandasGroupby仅针对特定字符串值计算多列的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>