真正复制熊猫系列

时间:2018-10-08 18:44:30

标签: python pandas deep-copy

我有一个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,有更好的方法吗?

2 个答案:

答案 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()))

只是为了确保索引也是递归复制的(如果需要)。