Python中的对象赋值和浅拷贝,深拷贝

文章讨论了在Python中使用map函数和get_dummies方法处理数据时,如何影响data_train数据帧的内存引用。map函数修改后的数据会指向新内存,而data_train仍能访问,但在使用get_dummies后,data指向新内存,但data_train未更新,导致修改无效。这涉及到Python的深拷贝和浅拷贝概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在看一篇资料的时候.有两处代码.

for data in [data_train, data_test_a]:
    data['grade'] = data['grade'].map({'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7})

这个代码可以查看data_train,可查看到数据修改.
但下面的代码

for data in [data_train, data_test_a]:
	data = pd.get_dummies(data, columns=['subGrade', 'homeOwnership', 
	'verificationStatus', 'purpose', 'regionCode'])

查看data_train却无法查看到数据修改.

原因

利用id()查看内存,可以发现
第一个代码:经过map修改后,data[‘grade’]指向了新的内存地址,但是仍然可以通过data_train[‘grade’]找到该内存地址.
第二个代码:经过get_dummie后,data 指向了新的内存地址,但data_train仍指向原来的内存地址,所以无法找到data指向的新的内存地址,所以修改无效.

参考资料:

Python 深拷贝和浅拷贝详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值