0
点赞
收藏
分享

微信扫一扫

pandas里的copy python变量更像是指针

python变量更像是指针,而不是数据存储区域。

浅拷贝 深拷贝 Dataframe

https://www.jianshu.com/p/d816a97c8c0d

pandas里的copy

https://blog.csdn.net/qq_41967784/article/details/122864218

deep=True,数据被复制但实际的Python对象不会被递归复制,只能引用该对象。这与标准库中的copy.deepcopy形成对比

https://www.cjavapy.com/article/348/

0

引用

独立

浅拷贝

深拷贝

pandas.copy()

deep=False

deep=True  # 默认

copy

copy()

deepcopy()

1

当涉及到对象的复制时,浅拷贝和深拷贝是两个常用的概念。

浅拷贝是指创建一个新的对象,该对象的内容是原始对象的引用。换句话说,浅拷贝只复制了对象的引用,而不是对象本身。当原始对象发生改变时,浅拷贝的对象也会随之改变。

深拷贝是指创建一个新的对象,该对象的内容是原始对象的副本。换句话说,深拷贝复制了对象的所有内容,包括对象内部的引用。即使原始对象发生改变,深拷贝的对象也不会受到影响。

下面是使用Python进行浅拷贝和深拷贝的简单示例:

import copy

# 浅拷贝示例
list1 = [1, 2, [3, 4]]
list2 = copy.copy(list1)

# 修改原始对象
list1[2][0] = 5

print(list1)  # 输出: [1, 2, [5, 4]]
print(list2)  # 输出: [1, 2, [5, 4]],浅拷贝的对象也受到了影响

# 深拷贝示例
list3 = copy.deepcopy(list1)

# 修改原始对象
list1[2][1] = 6

print(list1)  # 输出: [1, 2, [5, 6]]
print(list3)  # 输出: [1, 2, [5, 4]],深拷贝的对象不受影响

2pandas库的copy方法

df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = df1.copy(deep=False)
df1['A'][0] = 5
print(df1)
print(df2)  # 受影响! 浅拷贝

df3 = df1.copy(deep=True)
df1['B'][0] = 6
print(df1)
print(df3)  # 不受影响! 深拷贝

举报

相关推荐

0 条评论