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