[英]In python, convert pandas “one to many” dataset transposing rows to columns
I have two python datasets in "one to many" format, linked by ID column.我有两个“一对多”格式的 python 数据集,由 ID 列链接。
df1 = pd.DataFrame({'id': [1, 2],
'mandante': ['flamengo', 'botafogo'],
'visitante': ['ceara', 'são paulo'],
'vencedor': ['mandante', 'visitante']})
df2 = pd.DataFrame({'id': [1,1,2,2],
'tipo': ['mandante', 'visitante', 'mandante', 'visitante'],
'posse':['25%', '75%', '50%', '50%'],
'pontos': [25, 20, 14, 10]})
And I would like to join this datasets but adding columns to DF1 dataset for every two lines of DF2, creating a new dataset with columns made by eat row of DF2 dataset using "tipo" column in names...我想加入这个数据集,但是为 DF2 的每两行添加列到 DF1 数据集,创建一个新的数据集,其中的列是使用名称中的“tipo”列吃掉的 DF2 数据集的行...
thanks a lot!!!多谢!!!
Use DataFrame.pivot
with flatten columns of MultiIndex
:将DataFrame.pivot
与MultiIndex
的展平列一起使用:
df2 = df2.pivot(index='id',columns='tipo')
#alternative
#df2 = df2.set_index(['id','tipo']).unstack()
df2.columns = df2.columns.map(lambda x: f'{x[0]}_{x[1]}')
print (df2)
posse_mandante posse_visitante pontos_mandante pontos_visitante
id
1 25% 75% 25 20
2 50% 50% 14 10
And then add to df1
by DataFrame.join
:然后通过DataFrame.join
添加到df1
:
df = df1.join(df2, on='id')
print (df)
id mandante visitante vencedor posse_mandante posse_visitante \
0 1 flamengo ceara mandante 25% 75%
1 2 botafogo são paulo visitante 50% 50%
pontos_mandante pontos_visitante
0 25 20
1 14 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.