Python 将dataframe多列替换为另一个dataframe的id
我将熊猫数据帧df1设置为: 和df2: 列(c1、c2)上的df1和df2之间存在外键。加入看起来像:Python 将dataframe多列替换为另一个dataframe的id,python,pandas,dataframe,Python,Pandas,Dataframe,我将熊猫数据帧df1设置为: 和df2: 列(c1、c2)上的df1和df2之间存在外键。加入看起来像: pd.merge(df1, df2, left_on=['c1','c2'], right_on = ['c1','c2']) 结果是: 我想用df2.id替换df1中的(c1,c2)。 预期最终df1为: 换句话说,我想在df1中添加列'df2_id'(用此行的df2.id值填充),并删除列(c1、c2)(它们不再是必需的) 我想通过以下方式做到这一点: 保存df1中合并的结果 删除不必
pd.merge(df1, df2, left_on=['c1','c2'], right_on = ['c1','c2'])
结果是:
我想用df2.id替换df1中的(c1,c2)。
预期最终df1为:
换句话说,我想在df1中添加列'df2_id'(用此行的df2.id值填充),并删除列(c1、c2)(它们不再是必需的)
我想通过以下方式做到这一点:
有更好的解决方案吗?我们可以通过在上使用参数和
而不是左上、右上
并使用以下方法链接,将您的步骤变成一行:
输出
ID_1 c3 ID_2
0 1 32 1
1 3 11 1
2 2 34 2
3 4 3 3
要使其与OP的输出完全相同,请执行以下操作:
df1.merge(df2, on=['c1','c2'], suffixes=['', '_2']).drop(['c1', 'c2'], axis=1).rename(columns={"id_2": "df2_id"})
哇,太酷了!:)为了完美起见,我只会将后缀=['''''''''.''.''.''.'更改为后缀=['''''.''.'.'.''.''.''.'并在末尾添加。重命名(列={“id\u 2”:“df2\u id”})当然,added@MorticiaA.Addams
ID_x| c1 | c2 | c3 | ID_y
-------------------------
1 | A | B | 32 | 1
2 | C | D | 34 | 2
3 | A | B | 11 | 1
4 | E | F | 3 | 3
ID| c3 | df2_id
---------------
1 | 32 | 1
2 | 34 | 2
3 | 11 | 1
4 | 3 | 3
df1.merge(df2, on=['c1','c2'], suffixes=['_1', '_2']).drop(['c1', 'c2'], axis=1)
ID_1 c3 ID_2
0 1 32 1
1 3 11 1
2 2 34 2
3 4 3 3
df1.merge(df2, on=['c1','c2'], suffixes=['', '_2']).drop(['c1', 'c2'], axis=1).rename(columns={"id_2": "df2_id"})