【发布时间】:2020-09-29 22:40:13
【问题描述】:
我有一个如下所示的 df。
tmp = [('A','a', 1,1,0), ('A','b', 2,1,0), ('A','c', 3,2,1), ('B','a', 1,2,3), ('B','b', 0,1,2)]
df = pd.DataFrame(tmp, columns=['Col1', 'Col2', 'Val1', 'Val2', 'Val3'])
输出:
Col1 Col2 Val1 Val2 Val3
0 A a 1 1 0
1 A b 2 1 0
2 A c 3 2 1
3 B a 1 2 3
4 B b 0 1 2
我想根据 col1 分组对 val1、val2 和 val3 中的值求和。我可以使用以下内容正确格式化一列。
tmp = tmp.groupby(['Col1','Col2'])['Val1'].sum().unstack()
tmp = tmp.assign(Total=tmp.sum(1)).stack().to_frame('Val1')
输出:
Val1
Col1 Col2
A a 1.00
b 2.00
c 3.00
Total 6.00
B a 1.00
b 0.00
Total 1.00
我的目标是在上述 df 中添加 Val2 和 Val3 列,但我一直无法找到将上述方法链接在一起的干净方法。非常感谢任何帮助。
预期输出:
Val1 Val2 Val3
Col1 Col2
A a 1.00 1.00 0.00
b 2.00 1.00 0.00
c 3.00 2.00 1.00
Total 6.00 4.00 1.00
B a 1.00 2.00 3.00
b 0.00 1.00 2.00
Total 1.00 3.00 5.00
【问题讨论】:
标签: python python-3.x pandas