Python 为列组合具有不同名称的行

Python 为列组合具有不同名称的行,python,pandas,Python,Pandas,我有一个样本数据集: 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 d

我有一个样本数据集:

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

在此过程中,如何将2A3A重命名为2 | 3A?这只是一个样本数据集,但这一部分对我的真实生活很重要dataset@Jessica我已进行了编辑以添加到您的管道中。解决方案取决于您是否总是有
A
,或者是否有其他字母。把它编辑成你的问题,我可以试一试!例如,this
def join_by_pipe(s):return'|'。join(s.str.replace('A','')+'A'
可以满足您的需要,但如果您有,比如说,
5B
作为值,它可能无法为您的数据集实现。我用2A | 3B作为一个不同名称的示例,实际上新名称是“general hospital”之类的,所以这是偶然的,我并不是说它应该是“|”,那么我怎么才能把columA的名字改成我想要的任何名字呢?@Jessica我想你要么需要改写你的问题,把它包括在内,要么,当这回答了你原来的问题时,接受这个答案,然后打开另一个关于命名的问题。