以下のようにagg
関数をつかうとできます。
参考:Python: pandas の DataFrameGroupBy#agg() には関数も渡せる
単純な集計なら.sum()
でよいです。
Python
1import pandas as pd
2from io import StringIO
3s = """A,B,C
409011,20,10
509021,50,20
609021,30,10
709031,20,30
809031,30,40"""
9df = pd.read_csv(StringIO(s), dtype={'A':str})
10print(df)
11# A B C
12#0 09011 20 10
13#1 09021 50 20
14#2 09021 30 10
15#3 09031 20 30
16#4 09031 30 40
17
18
19dfg = df.groupby('A').sum()
20print(dfg)
21# B C
22#A
23#09011 20 10
24#09021 80 30
25#09031 50 70
26
27
28def func(sr):
29 s = f'{sum(sr)}'
30 if len(sr) > 1:
31 exp = '+'.join(map(str,sr))
32 s += f'({exp})'
33 return s
34
35dfg = df.groupby('A').agg({'B':func, 'C':func})
36print(dfg)
37# B C
38#A
39#09011 20 10
40#09021 80(50+30) 30(20+10)
41#09031 50(20+30) 70(30+40)