我是python新手,正在尝试学习如何使用它进行数据分析。我在python中有一个数据帧(称为“data”)。我要重新编码一个变量GEND,它有三个值(1,2,3)。使用pandas,我使用pd.read_csv()读取csv文件。我试图将变量GEND中的所有“3”实例替换为missing(NaN)。但是,我似乎不知道怎么做。到目前为止,我尝试了for循环,它不显示错误,但不更改变量信息:
for value in data.GEND:
if value == 3:
value = np.nan
我也试过这个,它没有显示错误,但也没有做任何事情:
data.GEND.loc[3] = np.nan
这个方法可以工作,但将ID变量的值更改为“3”,但在其他情况下,将GEND变量中的“3”值正确更改为NaN:
data.GEND.replace(to_replace=3, value = nan)
我错过了什么?我还想知道如何做到上述操作,但是在包含新信息的数据框中创建一个新列(这样,如果我搞砸了,就可以保留原始值)。
最佳答案
您可以使用loc替换3:
df = pd.DataFrame({'GEND':[1,2,1,2,3,1,2,3,1,2,1,2,]})
df.loc[df.GEND == 3, 'GEND'] = np.NaN
GEND
0 1
1 2
2 1
3 2
4 NaN
5 1
6 2
7 NaN
8 1
9 2
10 1
11 2
也可以使用可以获得相同结果的位置:
df.GEND = df.GEND.where(df.GEND != 3)