【发布时间】:2021-02-22 15:01:42
【问题描述】:
我遇到了一件我觉得很奇怪的事情:显然,要真正深度复制 pandas 数据帧是不可能的。
我希望,如果我创建一个数据帧的深层副本,并修改此副本中的数据,它不会影响原始数据帧。但显然情况并非如此,如果我没记错的话,甚至是可能的。
要重现的代码:
import pandas as pd
df = pd.DataFrame({'sets':set([1,2])}, index=[0])
def pop(df_in):
df = df_in.copy()
print(df['sets'].apply(lambda x: set([x.pop()])))
pop(df)
pop(df)
pop(df)
>>> KeyError: 'pop from an empty set'
或
import copy
import pandas as pd
df = pd.DataFrame({'sets':set([1,2])}, index=[0])
def pop(df_in):
df = copy.deepcopy(df_in)
print(df['sets'].apply(lambda x: set([x.pop()])))
pop(df)
pop(df)
pop(df)
>>> KeyError: 'pop from an empty set'
我的问题是:
- 是否可以创建真正的 pandas 数据帧的深层副本?
- 如果不是,为什么?如果是,怎么做?
【问题讨论】:
-
顺便说一句,在数据框中有集合是很奇怪的。
标签: python pandas dataframe deep-copy