我是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)

10-07 16:54