SettingWithCopyWarning&隐藏链接

时间:2017-11-20 15:51:30

标签: python pandas dataframe

我得到的SettingWithCopyWarning表明我可能会遇到链接问题。

  

SettingWithCopyWarning:   尝试在DataFrame的切片副本上设置值。   尝试使用.loc [row_indexer,col_indexer] = value而不是

我已经详细阅读了这篇文章,但似乎无法找到适合我的用例的解决方案。这是一篇关于这个主题的精彩文章:Understanding SettingwithCopyWarning in pandas

但是,我还不太清楚如何继续。以下是生成结束结果的同一行代码的三种变体,但都会引发相同的错误。

变体:

  1. X[subindex + '_DE'] = X[subindex + '_DE'].clip(lower=0, upper=200, axis=0)

  2. X.loc[:, subindex + '_DE'] = np.clip(df.loc[:, subindex + '_DE'], 0, 200)

  3. X.loc[:, subindex + '_DE'] = X.loc[:, subindex + '_DE'].clip(lower=0, upper=200, axis=0)

  4. 结束目标:只需剪辑(截断)列[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
    

1 个答案:

答案 0 :(得分:1)

找到答案。

def中,我设置了X = df[](数据帧)。如果我只是将.copy()添加到df[],那么警告就会消失。

E.g。 X = df[['column1', 'column2']].copy()

Benjamin Pryke上面的文章非常好......