问题
有如下表格,表格中有重复项,如:foo,bar,如果你想对表格的’A’列的值对应的’B’列和’C’列求和
A B C
0 foo 9 4
1 bar 2 1
2 foo 2 3
3 bar 3 6
4 foo 3 8
5 foo 4 0
解决
import pandas as pd
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': [9, 2, 2, 3, 3, 4],
'C': [4, 1, 3, 6, 8, 0]}
df = pd.DataFrame(data)
result = df.groupby('A').agg({'B': 'sum', 'C': 'sum'}).reset_index()
print(result)
result = result.sort_values(by='B', ascending=False)
result.to_excel('out.xlsx', index=False)
结果如下
A B C
0 bar 5 7
1 foo 18 15
扩展
如果是合并字符串,而不是数字相加
A B C
0 foo 1 X
1 bar 2 Y
2 foo 2 Z
3 bar 3 W
4 foo 3 P
5 foo 4 Q
代码如下
result = df.groupby('A').agg({'B': 'first', 'C': ', '.join}).reset_index()
最后结果如下
A B C
0 bar 2 Y, W
1 foo 1 X, Z, P, Q