【问题标题】:Dataframe replace rows by other数据框用其他行替换
【发布时间】:2016-12-19 09:34:01
【问题描述】:

我在 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

有没有更简单的方法来实现这一点? 谢谢你

【问题讨论】:

  • @EdChum,我会试试看它是否有效
  • 对不起,没有做你想做的事

标签: python dataframe merge


【解决方案1】:

您可以将reindex_likecombine_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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 2021-07-24
    • 2021-10-25
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多