如何在python中合并同一数据帧中的行?

2024-06-05 19:19:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望合并相同数据帧的行,更准确地说,在特定列中获取具有相同值的行,并只创建一行。举个例子:

我有以下数据帧:

te= {'TEAM': ['HC','TC','HC','BC','TC','BC'],
        'A1': [22,25,27,35,31,41],
        'A2': [20,50,70,11,14,12]
        }

df = pd.DataFrame(te,columns= ['TEAM', 'A1', "A2"])

print (df)

 TEAM  A1  A2
0   HC  22  20
1   TC  25  50
2   HC  27  70
3   BC  35  11
4   TC  31  14
5   BC  41  12

我想为列TEAM的三个可能值组成一行,比如预期的输出如下所示:

 TEAM  A1  A2  A1(1)  A2(1)
0   HC  22  20     27     70
1   TC  25  50     31     14
2   BC  35  11     41     12

我该怎么做?你知道吗


Tags: columns数据hca2dataframedfa1team
2条回答

它是具有列预处理的透视表

s = df.groupby('TEAM').cumcount()
m = s.astype(bool) * ('('+s.astype(str)+')')
df_out = df.set_index(['TEAM', m]).unstack().sort_index(level=1, axis=1).reset_index()
df_out.columns = df_out.columns.map(lambda x: f'{x[0]}{x[1]}')

Out[268]:
  TEAM  A1  A2  A1(1)  A2(1)
0   BC  35  11     41     12
1   HC  22  20     27     70
2   TC  25  50     31     14

也许有更好的方法,但是这个解决方案可以扩展到任意数量的行。你知道吗

df['order'] = df.groupby('TEAM').cumcount() + 1
df.set_index(['TEAM','order']).unstack()
#       A1      A2         
#order   1   2   1   2  
#TEAM                       
#BC     35  41  11  12  
#HC     22  27  20  70  
#TC     25  31  50  14  

相关问题 更多 >