繁体   English   中英

在不同列上合并两个数据框

[英]Merging Two Dataframes on Different Columns

合并两个不同列上的两个数据框,并重命名其他两个列。

 df1
 Male    height 
 Alex    156
 Philip  178

 df2
 Female  height
 Alex    144
 Janice  150

我想要这样的数据框

 df3
 Person   M_Height  F_Height
 Alex      156        144 
 Philip    178         0
 Janice     0         150

我该如何实现? 如果我说正确的话,合并将分别给我这两列。

In [21]: pd.merge(df1.rename(columns={'Male':'Person'}),
                  df2.rename(columns={'Female':'Person'}),
    ...:          on='Person', how='outer', suffixes=['_M','_F']) \
    ...:   .fillna(0)
Out[21]:
   Person  height_M  height_F
0    Alex     156.0     144.0
1  Philip     178.0       0.0
2  Janice       0.0     150.0

或者您可以尝试使用此方法来修复您的代码( 如果我说的是左右,则合并分别为我提供了两列

df=df1.merge(df2,left_on='Male',right_on='Female',how='outer',suffixes=['_M','_L'])
df.assign(Person=(df[['Male','Female']].ffill(axis=1)).Female).drop(['Male','Female'],axis=1).fillna(0)

Out[890]: 
   height_M  height_L  Person
0     156.0     144.0    Alex
1     178.0       0.0  Philip
2       0.0     150.0  Janice

第一步是将列名更改为不重叠

df1.columns = ['M_Height']
df2.columns = ['F_Height']

第二步是合并数据帧。

df = pd.merge([df1, df2], how='outer')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM