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

Pandas中使用apply修改新DataFrame列时,原DataFrame也被修改的问题

修改新DataFrame导致原DataFrame同步变化的原因与解决方法

问题根源

在Python中,modeldf = df这种赋值操作不会创建新的DataFrame对象,只是让变量modeldf和df指向内存中同一个DataFrame实例。因此,对modeldf的任何修改,都会直接作用于这个共享的实例,原df自然也会跟着变化。

解决方法

要创建独立于原DataFrame的副本,需要使用copy()方法:

  • 默认使用深拷贝(deep=True),会复制DataFrame的数据和索引,新对象与原对象完全独立
  • 浅拷贝(deep=False)仅复制索引和引用,数据仍共享,一般不推荐

修改后的代码示例

import pandas as pd

df = pd.DataFrame([['x1','x2'],['y1','y2']],columns=['A','B'])

lst = []
def getbinary(x):
    if x not in lst:
        lst.append(x)
    return lst.index(x)

# 创建独立副本,避免修改影响原DataFrame
modeldf = df.copy()
modeldf['A'] = df['A'].apply(getbinary)

执行上述代码后,modeldf的列会被修改,而原df将保持初始状态不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:10:26