我有一个pd.Series
,每个单元格都是一个列表。
我想对其进行深拷贝,但是似乎pd.Series.copy
仅创建值的浅拷贝(即使deep
arg是True
也是默认值)。
示例
import pandas as pd
sr = pd.Series([list(range(3)), list(range(3))])
sr_c = sr.copy()
sr[0].append(4)
复制的pd.Series
sr_c
正在转换为
0 [0, 1, 2, 4]
1 [0, 1, 2]
我做到了,而且奏效了:
from copy import deepcopy
sr_c = sr_c.apply(deepcopy)
这似乎是一种hack,有更好的方法吗?
答案 0 :(得分:3)
深度复制python对象的标准 hacky 方法应该有效。也就是说,使用pickle
。
import pickle
sr2 = pickle.loads(pickle.dumps(sr))
答案 1 :(得分:0)
我用过
from copy import deepcopy
sr_copy = pd.Series( deepcopy(sr.to_dict()))
只是为了确保索引也是递归复制的(如果需要)。