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的数据,另一个会跟着修改
df2['A'].iloc[0] = 2
df,df_shallow, df2三者保持一致,df_copy是深拷贝
参考:https://blog.youkuaiyun.com/weixin_46281427/article/details/123617945