DeepCopy在包含列表的数据框架上不起作用吗?如何解决
我正在尝试复制包含列表的数据框架。在复制的DF上,我必须对列表进行修改,但是原始列表也会被修改,这不是我想要的。我尝试过:
- df.copy()
- df.copy(deep = true)
- copy.deepcopy(df)
- df.apply(copy.deepcopy)
,但无效。据我了解,DeepCopy在包含可变对象的数据范围内不起作用。 这是我在网络上发现的示例代码:
>>> import copy
>>> import pandas as pd
>>> df = pd.DataFrame({'q': ['a', 'b', 'c'], 'w': [1, 2, [3, 4, 5]]})
>>> df
q w
0 a 1
1 b 2
2 c [3, 4, 5]
>>> df_c = df.apply(copy.deepcopy)
>>> df_c
q w
0 a 1
1 b 2
2 c [3, 4, 5]
>>> del df_c.loc[2, 'w'][0]
>>> df_c
q w
0 a 1
1 b 2
2 c [4, 5]
>>> df
q w
0 a 1
1 b 2
2 c [4, 5]
有没有办法对这种DF进行真正的深度拷贝?还是您将如何管理这种情况?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如您所提到的,DeepCopy不会复制数据框中的列表。
“请注意,复制包含Python对象的对象时,深副本将复制数据,但不会递归地进行。更新嵌套的数据对象将反映在深层副本中。”
As you have mentioned, deepcopy does not copy the lists within your dataframe.
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.copy.html
"Note that when copying an object containing Python objects, a deep copy will copy the data, but will not do so recursively. Updating a nested data object will be reflected in the deep copy."