执行列过滤时不了解"copy of slice"警告的来源以将值分配给熊猫上的另一列



我知道这个话题对许多熊猫初学者来说是个问题,但我仍然无法从过去的问题中解决。

我正在做一件非常简单的事情:使用布尔选择来过滤DF中X列中值小于1的行,以便将Y列的值转换为nan。

import pandas as pd
import numpy as np
df1 = pd.read_csv("C:/Users/Administrator/Desktop/df1.csv", index_col="county")
filter = df1["columnX"] < 1
df1.columnY[filter] = np.nan

我得到了一个:2:SettingWithCopyWarning:试图在DataFrame的切片副本上设置值。错误

我试着使用loc,认为它可以解决问题,但没有区别。

df1.loc[:,"columnY"][filter] = np.nan

我也四处寻找,试图复制DF,但似乎什么都不起作用。

如有任何帮助/解释,我们将不胜感激。提前谢谢。

将.loc访问器或.iloc访问器与布尔选择一起使用

让我们获取一些数据来使用

df=pd.DataFrame({'X':[1,3,67,0,-12],'Y':[12,6,8,-1,-8]})
print(df)
X   Y
0   1  12
1   3   6
2  67   8
3   0  -1
4 -12  -8
import numpy as np
m=df.X<1
df.loc[m,'Y']=np.nan
print(df)

X     Y
0   1  12.0
1   3   6.0
2  67   8.0
3   0   NaN
4 -12   NaN

最新更新