Why can pandas DataFrames change each other?(为什么 pandas 的DataFrame可以相互改变?)
本文介绍了为什么 pandas 的DataFrame可以相互改变?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试保留 pandas DataFrame的副本,以便我可以在保存原始数据帧的同时对其进行修改。但当我修改副本时,原始数据帧也会更改。例如:
df1=pd.DataFrame({'col1':['a','b','c','d'],'col2':[1,2,3,4]})
df1
col1 col2
a 1
b 2
c 3
d 4
df2=df1
df2['col2']=df2['col2']+1
df1
col1 col2
a 2
b 3
c 4
d 5
我将df2
设置为等于df1
,然后当我修改df2
时,df1
也会更改。为什么会这样?有没有办法保存 pandas DataFrame的备份(&Q;)而不修改它?
Python
这比数据帧深刻得多:您以错误的方式思考推荐答案变量。Python变量是指针,而不是桶。也就是说,当你写
>>> y = [1, 2, 3]
您没有将[1, 2, 3]
放入名为y
的存储桶中;而是创建了一个指向[1, 2, 3]
的名为y
的指针。
当您随后写
>>> x = y
您没有将y
的内容放入名为x
的存储桶中;您正在创建名为x
的指针,该指针指向与y
所指向的相同的对象。因此:
>>> x[1] = 100
>>> print(y)
[1, 100, 3]
因为x
和y
指向同一个对象,所以通过一个指针修改它也会修改另一个指针。如果您想指向一个副本,则需要显式创建一个副本。对于列表,您可以这样做:
>>> y = [1, 2, 3]
>>> x = y[:]
>>> x[1] = 100
>>> print(y)
[1, 2, 3]
通过DataFrames,您可以使用copy()
方法创建副本:
>>> df2 = df1.copy()
这篇关于为什么 pandas 的DataFrame可以相互改变?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:为什么 pandas 的DataFrame可以相互改变?


猜你喜欢
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- 如何将一个类的函数分成多个文件? 2022-01-01
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- python-m http.server 443--使用SSL? 2022-01-01
- 沿轴计算直方图 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01