python - 将值从一个数据帧插入/替换/合并到另一个数据帧

标签 python pandas pandas-merge

我有两个这样的数据框:

df1 = pd.DataFrame({'ID1':['A','B','C','D','E','F'],
                    'ID2':['0','10','80','0','0','0']})
df2 = pd.DataFrame({'ID1':['A','D','E','F'],
                    'ID2':['50','30','90','50'],
                    'aa':['1','2','3','4']})

df1,df2

我想插入ID2df2进入ID2df1 ,同时插入aa进入df1根据ID1获取像这样的新数据框:

df_result = pd.DataFrame({'ID1':['A','B','C','D','E','F'],
                       'ID2':['50','10','80','30','90','50'],
                         'aa':['1','NaN','NaN','2','3','4']})

df_result

我尝试过使用合并,但没有成功。

最佳答案

您可以使用combine_first将索引设置为 ID1 后在 DataFrame 上:

(df2.set_index('ID1')  # values of df2 have priority in case of overlap
    .combine_first(df1.set_index('ID1')) # add missing values from df1
    .reset_index()     # reset ID1 as column
)

输出:

  ID1 ID2   aa
0   A  50    1
1   B  10  NaN
2   C  80  NaN
3   D  30    2
4   E  90    3
5   F  50    4

关于python - 将值从一个数据帧插入/替换/合并到另一个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70958734/

相关文章:

python - DASK:当一方的 key 为 NA 时,合并会抛出错误,而 pd.merge 有效

python - 更新极性细胞中的重要结构

python - 在未捕获的主线程异常上优雅地退出子线程

python - pylint 可以检查所有文档顶部的静态注释/版权声明吗?

python - 返回超过 2 个并排匹配的数字的匹配项

python - 如何根据日期时间索引对 Pandas Dataframe 进行切片

python - Pandas 在连接后对 MultiIndex 进行排序

python-3.x - 如何在Python中修复 'Keyerror : 0 # duplicate columns & possible reduce dimensionality'