如何深度复制包含嵌套数据结构的Pandas Dataframe?

时间:2019-03-06 20:52:22

标签: python pandas nested deep-copy

我研究了浅拷贝深拷贝。我发现 copy.deepcopy() 在大多数情况下都可以正常工作。不知何故,它不适用于具有嵌套数据结构的pandas数据框。

请查看以下示例和结果,您将立即知道我在说什么:

import pandas as pd 
import copy`

a = pd.Series([[1,2], 3], index=["a", "b"])
b = a.copy(deep=True)                       
print('-->CASE 1')
print('before: \n', a)
d[0][0]=3
print('after: \n', a, '\n\n')

c = pd.Series([[1,2], 3], index=["a", "b"])
d = c.copy(deep=True)                       
print('-->CASE 2')
print('before: \n', c)
d[0]=3
print('after: \n', c, '\n\n')

e = pd.Series([[1,2], 3], index=["a", "b"])
print('-->CASE 3')
f = copy.deepcopy(e)                         
print('before: \n', e)
f[0][0]=3
print('after: \n', e, '\n\n')

g = pd.Series([[1,2], 3], index=["a", "b"])
print('-->CASE 4')                            
h = copy.deepcopy(g)
print('before: \n', g)
h[0]=3
print('after: \n', g, '\n\n')

结果类似于:

-->CASE 1
before: 
a    [1, 2]
b         3
dtype: object
after: 
a    [3, 2]
b         3
dtype: object 


-->CASE 2
before: 
a    [1, 2]
b         3
dtype: object
after: 
 a    [1, 2]
b         3
dtype: object 


-->CASE 3
before: 
a    [1, 2]
b         3
dtype: object
after: 
a    [3, 2]
b         3
dtype: object 


-->CASE 4
before: 
a    [1, 2]
b         3
dtype: object
after: 
a    [1, 2]
b         3

很明显,当数据帧包含嵌套数据结构时,copy.deepcopy()df.copy(deep=True)都无法真正执行深度复制。

如何像示例案例一样,使用嵌套数据对数据框进行真正的“深度复制”

0 个答案:

没有答案