gpt4 book ai didi

python - 将具有不同名称的行合并为列 pandas python

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:55 25 4
gpt4 key购买 nike

我有一个示例数据集:

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 加 3A”等,我使用“2A|3A”作为示例,这让一些人感到困惑。 我想总结第 2A 行和第 3A 行的计数,并将其命名为 SAB期望的输出:

  columA  columnB count
1A a 1
SAB dd 46
4A ee 52
5A d 3
6A f 2

最佳答案

我们可以在 B 列上使用 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

关于python - 将具有不同名称的行合并为列 pandas python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44576812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com