我知道这个话题对许多熊猫初学者来说是个问题,但我仍然无法从过去的问题中解决。
我正在做一件非常简单的事情:使用布尔选择来过滤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