pandas 正在使用更新索引合并2个 Dataframe ,但在运行以下代码后, Dataframe 1中缺少索引列[重复]

oknrviil  于 2022-11-20  发布在  其他
关注(0)|答案(1)|浏览(107)
    • 此 问题 在 此处 已有 答案 * * :

Pandas Merging 101 ( 8 个 答案 )
4 天 前 关闭 。
我 有 一 个 2 数据 帧 , 我 想 根据 唯一 列 " respid " , 用 数据 帧 2 列 " var1 " 更新 数据 帧 1 特定 列 " var1 " 。

这 只是 一 个 例子 :在 df1 中 有 更多 的 列 和 上面 的 例子 一样 。 但是 dataframe2 和 上面 的 例子 一样 。 我 用 下面 的 代码 做 了 同样 的 事情 , 它 在 var1 中 工作 的 很 好 。 但是 我 的 索引 列 " respid " 在 执行 后 丢失 了 。

df1.set_index(['respid'], inplace=True)
df1.update(df2.set_index(['respid']))
df1.reset_index()
with pd.ExcelWriter("path"+ ".xlsx") as writer:
    df1.to_excel(writer, sheet_name='sheet2', index=False)

中 的 每 一 个
请 让 我 知道 为什么 " respid " 列 从 df1 中 丢失 , 如果 可能 的 话 , 请 更正 。

brgchamk

brgchamk1#

试试这边

df =  pd.merge(df1,df2,on = ['respid'],how ='inner')
dfs = pd.merge(df,df1,on = ['respid'],how ='outer')

dfs =dfs.drop(columns=['var1_x','var1'])
dfs = dfs.fillna('')
dfs.columns = ['respid', 'var1']

其给出了

respid      var1
0   27217  screened
1   27211  screened
2   27214  screened
3   25402          
4    1111

相关问题