You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含新列的df2覆盖回原Pandas DataFrame?

解决方案

方法1:先初始化新列再赋值

你的原DataFrame df 中不存在new_col列,直接用df.loc[df2.index] = df2只会更新df已有的列,不会自动新增列。可以先给df添加新列,再执行赋值操作:

import numpy as np
import pandas as pd
from random import rand

# 给df初始化新列,默认值设为NaN(或其他符合业务逻辑的默认值)
df['new_col'] = np.nan

# 此时赋值会同时更新现有列、填充新列
df.loc[df2.index] = df2

方法2:合并剩余行与修改后的df2

如果不想提前初始化新列,可先保留df中无需修改的行,再和修改后的df2合并,这样会自动包含df2的新列:

# 筛选df中不在df2索引范围内的行
df_remaining = df.drop(df2.index)
# 合并剩余行与修改后的df2,最后按索引排序恢复原顺序
df = pd.concat([df_remaining, df2]).sort_index()

补充说明

  • 两种方法都能实现覆盖原有记录+同步新列的需求,按需选择:
    • 方法1效率更高,适合提前明确要新增列的场景;
    • 方法2更灵活,适合不确定新增列数量的场景。
  • 确保df2的索引与df对应行的索引完全匹配,避免赋值/合并错误。

内容的提问来源于stack exchange,提问作者keynesiancross

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 03:36:22