FutureWarning:不推荐使用 DataFrame 与 Series 比较的自动重新索引,并将在将来的版本中引发 ValueError

FutureWarning: Automatic reindexing on DataFrame vs Series comparisons is deprecated and will raise ValueError in a future version

提问人:PlutoSenthil 提问时间:10/27/2021 更新时间:11/25/2022 访问量:4249

问:

/opt/conda/lib/python3.7/site-packages/ipykernel_launcher.py:8:FutureWarning:不推荐使用对 DataFrame 与系列比较进行自动重新索引,并将在将来的版本中引发 ValueError。例如,在之前做left, right = left.align(right, axis=1, copy=False)left == right

我试图从数据框中删除异常值 我手动使用 Z-Score

numerical_cols=df.select_dtypes(['int64','float64'])
for col in numerical_cols:
    feature_value_less_than_3sigma=df[col].mean()-3*(df[col].std())
    feature_value_greater_than_3sigma=df[col].mean()+3*(df[col].std())
    df = df[~((df[col] < (feature_value_less_than_3sigma)) |(df[col] > (feature_value_greater_than_3sigma)))]
else:
    print('\nAfter: ',df.shape)

我不知道这个错误在说什么,我想知道它,任何人都可以用一些简单的例子来解释

Pandas DataFrame 索引 系列

评论


答:

0赞 Toro 2/27/2022 #1

而不是:

df = df[~((df[col] < (feature_value_less_than_3sigma)) |(df[col] > (feature_value_greater_than_3sigma)))]

用:

df = df.query('~(%s < @feature_value_less_than_3sigma or %s > @feature_value_greater_than_3sigma)' %(col,col))

这应该会删除错误。

评论

1赞 Adriaan 11/25/2022
请阅读如何回答编辑您的答案,以包含解释为什么此代码实际上可以解决手头的问题。永远记住,您不仅在解决问题,而且还在教育 OP 和这篇文章的任何未来读者。
0赞 iparen 9/3/2022 #2

试试这个:

df = df[~((df[col].lt(feature_value_less_than_3sigma)) |(df[col].gt (feature_value_greater_than_3sigma)))]

评论

1赞 Adriaan 11/25/2022
请阅读如何回答编辑您的答案,以包含解释为什么此代码实际上可以解决手头的问题。永远记住,您不仅在解决问题,而且还在教育 OP 和这篇文章的任何未来读者。