首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用新数据帧更新数据帧,覆盖

使用新数据帧更新数据帧,覆盖
EN

Stack Overflow用户
提问于 2021-08-24 19:08:22
回答 2查看 36关注 0票数 2

虽然这个问题看起来和之前的问题很相似,但我不能用之前的答案来解决它,我需要专家的帮助。

我正在尝试用从不同数据帧(df2)接收的数据更新现有数据帧(df1)到新的数据帧(df)。数据帧df2可以具有新列、新行或新/空白数据。下面是我想要实现的一个例子。

代码语言:javascript
复制
df1 = pd.DataFrame(np.array([[1, 'A1', 'B1'], [2, 'A2', 'B2'], [3, 'A3', 'B3']]), columns=['ID', 'A', 'B'])
df1

    ID  A   B
0   1   A1  B1
1   2   A2  B2
2   3   A3  B3

df2 = pd.DataFrame(np.array([[1, 'A1X', 'B1X'], [2, 'A2X', ''], [4, 'A4', 'B4']]), columns=['ID', 'A', 'B'])
df2

    ID  A   B
0   1   A1X B1X
1   2   A2X NaN
2   4   A4  B4

所需的输出为:

代码语言:javascript
复制
df
    ID  A   B
0   1   A1X B1X
1   2   A2X B2
2   3   A3  B3
3   4   A4  B4

你能帮帮我吗?

熊猫新手用户

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-24 19:20:20

尝试:

代码语言:javascript
复制
df1 = pd.DataFrame(np.array([[1, 'A1', 'B1'], [2, 'A2', 'B2'], [3, 'A3', 'B3']]), columns=['ID', 'A', 'B'])


df2 = pd.DataFrame(np.array([[1, 'A1X', 'B1X'], [2, 'A2X', ''], [4, 'A4', 'B4']]), columns=['ID', 'A', 'B'])


df1 = df1.set_index('ID').replace('', np.nan)
df2 = df2.set_index('ID').replace('', np.nan)

df_out = df2.combine_first(df1)
print(df_out)

输出:

代码语言:javascript
复制
      A    B
ID          
1   A1X  B1X
2   A2X   B2
3    A3   B3
4    A4   B4
票数 3
EN

Stack Overflow用户

发布于 2021-08-24 19:14:32

使用set_index()combine_first()为每个数据帧设置索引

此外,根据Scott波士顿的回答,请确保首先使用nan replace空白值。

代码语言:javascript
复制
df2.set_index('ID').combine_first(df1.set_index('ID')).reset_index()
Out[1]: 
  ID    A    B
0  1  A1X  B1X
1  2  A2X     
2  3   A3   B3
3  4   A4   B4
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68912866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档