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

Python调用函数修改DataFrame时如何避免外部原df变量被改动

问题原因

  • Pandas的DataFrame属于可变对象,Python给函数传参时默认传递可变对象的内存引用,所以函数内部对传入的DataFrame做修改时,操作的是和外部变量同一块内存空间的数据,自然会修改外部的原始变量。

解决方法

  • 只需要在函数内部对传入的DataFrame先做深拷贝,基于拷贝后的新对象做修改即可,不会影响原始数据。

修改后代码如下:

import pandas as pd
df = pd.DataFrame({'A': [10, 20, 30]}, index=['2021-11-24', '2021-11-25', '2021-11-26'])

def my_function(df_temp):
    # 新增深拷贝步骤,deep=True表示完全复制数据生成独立的新对象
    df_temp = df_temp.copy(deep=True)
    df_temp['A'][0] = 100
    return df_temp         

something = my_function(df)
print(df) 
# 此时输出原始df不会被修改:
#              A
# 2021-11-24  10
# 2021-11-25  20
# 2021-11-26  30

# 如果你要覆盖原来的df再执行赋值即可
# df = my_function(df)
# print(df)

注意事项

  • 不要使用浅拷贝操作,浅拷贝仍然会共享底层数据,修改后还是会影响原始DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:45:08