我已经用 .loc
引发的 SettingWithCopyWarning
错误检查了关于 SO 的类似问题,但我仍然不明白为什么我在以下示例中出现错误。
它出现在第 3 行,我成功地使用 .copy()
使其消失,但我想了解为什么 .loc
在这里没有特别起作用。
即使它是 .loc
,制作条件切片是否会创建 View ?
df = pd.DataFrame( data=[0,1,2,3,4,5], columns=['A'])
df.loc[:,'B'] = df.loc[:,'A'].values
dfa = df.loc[df.loc[:,'A'] < 4,:] # here .copy() removes the error
dfa.loc[:,'C'] = [3,2,1,0]
编辑:pandas 版本是 1.2.4
最佳答案
dfa = df.loc[df.loc[:,'A'] < 4,:]<br>
dfa
是 df 数据帧的一部分,仍然引用数据帧,一个 View 。
.copy 创建一个单独的副本,而不仅仅是第一个数据帧的 View 。
dfa.loc[:,'C'] = [3,2,1,0]
当它是 View 而不是副本时,您会收到警告:试图在 DataFrame 的切片副本上设置值。
.loc 正在定位您提供的条件,但如果您不将其设为数据框的副本,它仍然是您设置值的 View 。
关于python-3.x - 为什么使用 .loc 引发 SettingWithCopyWarning?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70489707/