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

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

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 深拷贝和浅拷贝详解

猜你喜欢

转载自blog.csdn.net/zhangyifeng_1995/article/details/129973577