【发布时间】:2021-05-05 09:01:34
【问题描述】:
我有一个 DataFrame 列表。我在pp 中提取了这个DataFrame 之一,并修改了pp 的一列。当我注意到原来的 DataFrame 也被修改时,我仍然感到震惊。
我有质量问题,因为我不知道有多少脚本受到影响。有对此的解释吗?我做错了什么?
df1 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),columns=['a', 'b', 'c'])
df3=df2=df1
predictions=[df1,df2,df3]
predictions
Out[96]:
[ a b c
0 1 2 3
1 4 5 6
2 7 8 9,
a b c
0 1 2 3
1 4 5 6
2 7 8 9,
a b c
0 1 2 3
1 4 5 6
2 7 8 9]
pp=predictions[0]
pp['a']= np.random.uniform(low=2, high=3, size=(len(pp['a']),))
predictions
Out[99]:
[ a b c
0 2.309992 2 3
1 2.585460 5 6
2 2.845087 8 9,
a b c
0 2.309992 2 3
1 2.585460 5 6
2 2.845087 8 9,
a b c
0 2.309992 2 3
1 2.585460 5 6
2 2.845087 8 9]
【问题讨论】:
-
使用
predictions[0].copy()以便您获得原始数据帧的副本。请参阅 aoout 副本here。 -
predictions没有新的内存空间,它只是一个参考。您需要创建一个副本! -
当我们使用 df1=df2 创建数据框时,在 df1 中完成的所有数据操作也将在 df1 中实现。尝试使用 df1=df2.copy() 创建 Dfs 现在,当我们在 DF1 中进行更改时,DF2 将保持不变。
标签: pandas list dataframe extract