Python:合并具有不同行的数据框

标签 python dataframe merge

我需要合并两个具有不同行且没有公共(public)键的数据框:

df1:

名称 |年龄 |定位

鲍勃 | 20 |美国

df2:

食物 |汽车 |体育

寿司 |丰田 |足球

肉 |福特|棒球

我想要的结果:

名称 |年龄 |洛克|食品|汽车 |体育

鲍勃 | 20 |美国 |寿司|丰田 |足球

鲍勃 | 20 |美国 |肉类|福特|棒球

我的代码如下:

pd.merge(df1,df2,how='right',left_index=True,right_index=True)

当 df2 多于两行时它工作正常,但当 df2 只有一行时它不正确。

对于这个问题有什么想法吗?

最佳答案

使用reindex_axisdf2 的索引:

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如果 df1df2 中没有 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/

相关文章:

R:如何快速地从一个非常大的表格中选择两列中的常用单词或相同数字?

python - Pandas 数据框根据元组列表创建新列

java - 在 iText 中合并两个模板

javascript - 如何在 lodash 中创建具有掩盖属性的新对象?

python - 在 Pandas 数据框中写入行并将其附加到现有数据框中

python - 消除 CSV 文件中不需要的换行符

python - 删除列中的重复值,保留行

python - 如何在保留列的同时找到累积计数行之间的差异

git - merge 两个分支

javascript - 错误 404 找不到 js 文件