小编Иль*_*ков的帖子

pandas.DataFrame.copy(deep=True) 实际上并不创建深层复制

我已经用 pd.Series 和 pd.DataFrame 进行了一段时间的实验,并遇到了一些奇怪的问题。假设我有以下 pd.DataFrame:

df = pd.DataFrame({'col':[[1,2,3]]})

请注意,该数据框包括包含列表的列。我想修改此数据框的副本并返回其修改后的版本,以便初始版本保持不变。为了简单起见,假设我想在其单元格中添加整数“4”。

我尝试过以下代码:

def modify(df):
    dfc = df.copy(deep=True)
    dfc['col'].iloc[0].append(4)
    return dfc

modify(df)
print(df)
Run Code Online (Sandbox Code Playgroud)

问题是,除了新的副本之外dfc,初始的 DataFramedf也被修改了。为什么?我应该怎么做才能防止初始数据帧被修改?我的pandas版本是0.25.0

python copy list dataframe pandas

7
推荐指数
1
解决办法
6165
查看次数

标签 统计

copy ×1

dataframe ×1

list ×1

pandas ×1

python ×1