Dav*_*roy 1 merge dataframe pandas
我有两个数据框。我正在尝试将数据从DF1合并到DF2,而不更改DF2中以前存在的任何数据。
DF1 =
Value Color
0 Red
1 White
2 Blue
DF2 =
Value Color
0
1
2 Brown
3 Black
4 White
5
DF3 = pd.merge(DF2, DF1, on="Value", how='left', suffixes=('_x', '')).drop(['Color_x'], axis=1)
Run Code Online (Sandbox Code Playgroud)
当前结果:它将覆盖已经存在的数据。例如,它正确地将棕色覆盖为蓝色。但是,由于DF1中不存在这些值,因此它也会删除“黑白”。我希望它只是合并或覆盖我们要在匹配项上合并的值。
DF3 =
Value Color
0 Red
1 White
2 Blue
3
4
5
Run Code Online (Sandbox Code Playgroud)
预期结果:
DF3 =
Value Color
0 Red
1 White
2 Blue
3 Black
4 White
5
Run Code Online (Sandbox Code Playgroud)
你寻找 update
df2.update(df1)
print(df2)
Out[253]:
Value Color
0 0.0 Red
1 1.0 White
2 2.0 Blue
3 3.0 Black
4 4.0 White
5 5.0
Run Code Online (Sandbox Code Playgroud)
注意:此答案基于您的样本数据,其中df1index或是value的子集df2。您没有提到index,所以我假设它是default rangeindex。如果指数不rangeindex,你需要set_index在value
df2 = df2.set_index('Value')
df2.update(df1.set_index('Value'))
df2 = df2.reset_index()
Run Code Online (Sandbox Code Playgroud)