我得到的SettingWithCopyWarning表明我可能会遇到链接问题。
SettingWithCopyWarning: 尝试在DataFrame的切片副本上设置值。 尝试使用.loc [row_indexer,col_indexer] = value而不是
我已经详细阅读了这篇文章,但似乎无法找到适合我的用例的解决方案。这是一篇关于这个主题的精彩文章:Understanding SettingwithCopyWarning in pandas
但是,我还不太清楚如何继续。以下是生成结束结果的同一行代码的三种变体,但都会引发相同的错误。
变体:
X[subindex + '_DE'] = X[subindex + '_DE'].clip(lower=0, upper=200, axis=0)
X.loc[:, subindex + '_DE'] = np.clip(df.loc[:, subindex + '_DE'], 0, 200)
X.loc[:, subindex + '_DE'] = X.loc[:, subindex + '_DE'].clip(lower=0, upper=200, axis=0)
结束目标:只需剪辑(截断)列[subindex +' _DE']中超出下限(0)和上限(200)的任何值。
我不知道该怎么办。一点指导会有所帮助。提前谢谢。
有用的背景信息:
X是float64数据的pandas数据帧,排列在20列(特征)x 6514行(观察)中。
以下是可以使用的一些数据:
> print(X[subindex + '_DE'].head(180))
> date
> 1999-12-31 33.6584
> 2000-01-01 33.6584
> 2000-01-02 33.6584
> 2000-01-03 33.6584
> ... ...
> 2000-06-25 32.6530
> 2000-06-26 32.6530
> 2000-06-27 32.6530
> Name: NYEPLC_DE, Length: 180, dtype: float64
答案 0 :(得分:1)
找到答案。
在def
中,我设置了X = df[]
(数据帧)。如果我只是将.copy()
添加到df[]
,那么警告就会消失。
E.g。 X = df[['column1', 'column2']].copy()
Benjamin Pryke上面的文章非常好......