我有一个示例数据集:
import pandas as pd
df = {
'columA':['1A','2A','3A','4A','5A','6A'],
'count': [ 1, 12, 34, 52, '3',2],
'columnB': ['a','dd','dd','ee','d','f']
}
df = pd.DataFrame(df)
它看起来像这样:
columA columnB count
1A a 1
2A dd 12
3A dd 34
4A ee 52
5A d 3
6A f 2
更新:组合的2A和3A名称应该是任意的,如'SAB'或'2A plus 3A'等,我以'2A | 3A'为例,它让一些人感到困惑。 我想总结计数行2A和3A,并给它一个名字SAB 期望的输出:
columA columnB count
1A a 1
SAB dd 46
4A ee 52
5A d 3
6A f 2
答案 0 :(得分:1)
我们可以在columnB上使用groupby
df = {'columA':['1A','2A','3A','4A','5A','6A'],
'count': [ 1, 12, 34, 52, '3',2],
'columnB': ['a','dd','dd','ee','d','f']}
df = pd.DataFrame(df)
df.groupby('columnB').agg({'count': 'sum', 'columA': 'sum'})
columA count
columnB
a 1A 1
d 5A 3
dd 2A3A 46
ee 4A 52
f 6A 2
如果您关心索引名称,可以编写类似的函数。
def join_by_pipe(s):
return '|'.join(s)
df.groupby('columnB').agg({'count': 'sum', 'columA': join_by_pipe})
columA count
columnB
a 1A 1
d 5A 3
dd 2A|3A 46
ee 4A 52
f 6A 2