我在python中有两个数据帧:
DF1:
code | A | B
1 p r
2 q s
3 t u
和
DF2:
code | A | B
1 v w
3 x y
4 z I
我想要做的是用df2的值替换df2中存在的df1行(基于'代码'列)...(注意我没有'我想包括来自df2的不在df1中的行(基于'代码'列)
我不想合并或加入他们!因为它们似乎会复制列!
输出应如下所示:
code | A | B
1 v w
2 q s
3 x y
我已经编写了一些代码来实现这一点,但似乎需要很长时间,或者它甚至无法工作......(没有错误!)
#result
df = pd.DataFrame(columns=df1.columns)
#replace these
ind1 = df2.ncodpers
#iterate
for i, row in df1.iterrows():
if (row['code'] in ind1):
temp = df2[df2['code'] == row['code']]
df=df.append(temp)
else:
df=df.append(row)
df1 = df
有更简单的方法来实现这一目标吗? 谢谢
答案 0 :(得分:1)
您可以reindex_like
使用combine_first
:
print (df2.set_index('code')
.reindex_like(df1.set_index('code'))
.combine_first(df1.set_index('code'))
.reset_index())
code A B
0 1 v w
1 2 q s
2 3 x y