对大熊猫系列进行真正的深度复制[英] make a truly deep copy of a pandas Series

本文是小编为大家收集整理的关于对大熊猫系列进行真正的深度复制的处理方法,想解了对大熊猫系列进行真正的深度复制的问题怎么解决?对大熊猫系列进行真正的深度复制问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个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)

但是,这似乎是一个黑客,有没有更好的方法?

推荐答案

标准 hacky 深层python对象的方法应起作用.也就是说,使用pickle.

import pickle
sr2 = pickle.loads(pickle.dumps(sr))

其他推荐答案

我已经使用了

from copy import deepcopy
sr_copy = pd.Series( deepcopy(sr.to_dict()))

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

本文地址:https://www.itbaoku.cn/post/1728122.html