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

关于pandas.DataFrame的copy参数疑问及示例请求

关于pandas.DataFrame中copy参数的说明与示例

核心作用

copy参数用于控制是否显式复制传入的data数据,以此决定新创建的DataFrame是否与原始输入共享内存:

  • 默认行为:根据输入类型自动判断——若输入是ndarray/DataFrame且dtype匹配,会复用内存(不复制);若为列表等类型或dtype不匹配,则自动复制。
  • 手动设置copy=True:强制复制数据,新DataFrame与原始数据内存独立。
  • 手动设置copy=False:强制复用内存(仅支持ndarray、DataFrame等可共享内存的输入类型)。

示例1:默认情况(未指定copy)

import pandas as pd
import numpy as np

# 用ndarray创建DataFrame
arr = np.array([[1,2],[3,4]])
df_default = pd.DataFrame(arr)

# 修改DataFrame的值
df_default.iloc[0,0] = 99

print("原始数组arr:", arr)
print("DataFrame df_default:\n", df_default)

输出:

原始数组arr: [[99  2]
 [ 3  4]]
DataFrame df_default:
    0  1
0  99  2
1   3  4

说明:默认复用了ndarray的内存,修改DataFrame会同步改变原始数组。


示例2:设置copy=True(强制复制)

import pandas as pd
import numpy as np

arr = np.array([[1,2],[3,4]])
df_copy_true = pd.DataFrame(arr, copy=True)

# 修改DataFrame的值
df_copy_true.iloc[0,0] = 99

print("原始数组arr:", arr)
print("DataFrame df_copy_true:\n", df_copy_true)

输出:

原始数组arr: [[1 2]
 [3 4]]
DataFrame df_copy_true:
    0  1
0  99  2
1   3  4

说明:强制复制后,新DataFrame与原始数组内存独立,修改互不影响。


示例3:设置copy=False(强制复用内存)

仅对ndarray、DataFrame等支持内存共享的输入生效:

import pandas as pd

# 用已有DataFrame创建新对象
original_df = pd.DataFrame([[1,2],[3,4]])
df_copy_false = pd.DataFrame(original_df, copy=False)

# 修改新DataFrame的值
df_copy_false.iloc[0,0] = 99

print("原始DataFrame original_df:\n", original_df)
print("DataFrame df_copy_false:\n", df_copy_false)

输出:

原始DataFrame original_df:
    0  1
0  99  2
1   3  4
DataFrame df_copy_false:
    0  1
0  99  2
1   3  4

说明:两者共享内存,修改新DataFrame会同步改变原始DataFrame。


注意事项

  • 若需保护原始数据不被意外修改,优先设置copy=True,哪怕会占用额外内存。
  • 处理超大数据集时,copy=False可节省内存,但需注意后续操作会影响原始数据,需谨慎使用。

内容的提问来源于stack exchange,提问作者dien thang le

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:39:53