pandas深拷贝浅拷贝

pandas深拷贝浅拷贝

写pandas时,经常会出现把一个dataframe赋值给另一个dataframe的写法,

import pandas as pd
data = {'A': [1, 2, 3],
 'B': [['厉害', '真棒'], ['值得鼓励', '继续加油'], ['相信未来--勇闯天涯']],
 'C': [{'key': '试一试', 'value': 'try'}, {'key': '看一看', 'value': 'look'}, {'key': '拍一拍', 'value': 'tickle'}]}
df = pd.DataFrame(data)
df_shallow = df.copy(deep=False) # 浅复制
df_copy = df.copy() # 深复制
df2 = df     #浅拷贝

print(id(df_copy),id(df_shallow),id(df), id(df2))
#输出:1953213900488 1953285022408 1953240843848 1953240843848

可以看到,直接赋值是浅拷贝,深拷贝使用df.copy(). 当使用浅拷贝时,修改了一个dataframe的数据,另一个会跟着修改
pandas深拷贝浅拷贝_第1张图片

df2['A'].iloc[0] = 2

pandas深拷贝浅拷贝_第2张图片pandas深拷贝浅拷贝_第3张图片
pandas深拷贝浅拷贝_第4张图片
df,df_shallow, df2三者保持一致,df_copy是深拷贝
参考:https://blog.csdn.net/weixin_46281427/article/details/123617945

你可能感兴趣的:(pandas,python,数学建模)