我想更准确地合并同一数据帧的行,以在特定列中采用具有相同值的行,并仅创建一行。这是一个示例:
我有以下数据框:
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
我该怎么做?
答案 0 :(得分:1)
这是对列进行预处理的数据透视表
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
答案 1 :(得分:0)
也许有更好的方法,但是此解决方案可扩展到任意数量的行。
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