可能这个问题已经有了答案,但我找不到任何答案。如果两个数据帧之间存在匹配,我想从第二个数据帧中获取要附加到第一个数据帧中的新列的项目在这里,我展示了一些与我面临的案例非常相似的示例数据。import pandas as pdimport numpy as npa = np.arange(3).repeat(3)b = np.tile(np.arange(3),3)df1 = pd.DataFrame({'a':a, 'b':b}) a b0 0 01 0 12 0 23 1 04 1 15 1 26 2 07 2 18 2 2a2 = np.arange(1, 4).repeat(3)b2 = np.tile(np.arange(3),3)c = np.random.randint(0, 10, size=a2.size)df2 = pd.DataFrame({'a2':a2, 'b2':b2, 'c':c}) a2 b2 c0 1 0 31 1 1 12 1 2 93 2 0 54 2 1 85 2 2 46 3 0 17 3 1 68 3 2 1所需的输出应该是 a b c0 0 0 nan1 0 1 nan2 0 2 nan3 1 0 34 1 1 15 1 2 96 2 0 57 2 1 88 2 2 4不幸的是,我无论如何都想不出解决它。
1 回答

精慕HU
TA贡献1845条经验 获得超8个赞
merge与左连接一起使用并重命名列名称:
df = df1.merge(df2.rename(columns={'a2':'a', 'b2':'b'}), on=['a','b'], how='left')
print (df)
a b c
0 0 0 NaN
1 0 1 NaN
2 0 2 NaN
3 1 0 3.0
4 1 1 5.0
5 1 2 0.0
6 2 0 2.0
7 2 1 6.0
8 2 2 2.0
添加回答
举报
0/150
提交
取消