我需要合并两个具有不同行且没有公共(public)键的数据框:
df1:
名称 |年龄 |定位
鲍勃 | 20 |美国
df2:
食物 |汽车 |体育
寿司 |丰田 |足球
肉 |福特|棒球
我想要的结果:
名称 |年龄 |洛克|食品|汽车 |体育
鲍勃 | 20 |美国 |寿司|丰田 |足球
鲍勃 | 20 |美国 |肉类|福特|棒球
我的代码如下:
pd.merge(df1,df2,how='right',left_index=True,right_index=True)
当 df2 多于两行时它工作正常,但当 df2 只有一行时它不正确。
对于这个问题有什么想法吗?
最佳答案
使用reindex_axis
按 df2
的索引:
df1 = df1.reindex_axis(df2.index, method='ffill')
print (df1)
name age loc
0 Bob 20 USA
1 Bob 20 USA
df = pd.merge(df1,df2,how='right',left_index=True,right_index=True)
print (df)
name age loc food car sports
0 Bob 20 USA Sushi Toyota soccer
1 Bob 20 USA meat Ford baseball
您可以使用fillna
如果 df1
和 df2
中没有 NaN
数据,则使用方法 ffill
(.ffill
) :
#default outer join
df = pd.concat([df1,df2], axis=1).ffill()
print (df)
name age loc food car sports
0 Bob 20.0 USA Sushi Toyota soccer
1 Bob 20.0 USA meat Ford baseball
df = pd.merge(df1,df2,how='right',left_index=True,right_index=True).ffill()
print (df)
name age loc food car sports
0 Bob 20.0 USA Sushi Toyota soccer
1 Bob 20.0 USA meat Ford baseball
关于Python:合并具有不同行的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44542155/