在pandas df片段中设置值会引发SettingWithCopyWarning

时间:2016-05-24 21:09:26

标签: python pandas slice

我通过执行以下操作来遵循指定indexing-view-versus-copy的说明:

df.loc[:,('ratio')][np.isinf(df.loc[:,('ratio')])] =np.nan

但是我收到SettingWithCopyWarning警告。基本上我想在我除以零的情况下将inf值设置为np.nan

<string>:265: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

1 个答案:

答案 0 :(得分:1)

基本上,您正在做的是chained indexing:您首先选择列,然后从返回的数据框中选择行。 df.loc[np.isinf(df['ratio']), 'ratio'] = np.nan 允许您同时选择它们。它也接受一个布尔数组,所以你可以这样做:

Analyzer