我是python的新手,并试图学习如何使用它进行数据分析。我在python中有一个数据框(称为“数据”)。我想重新编码一个变量GEND,它有三个值(1,2,3)。使用pandas,我使用pd.read_csv()读入csv文件。我试图将变量GEND中的所有“3”实例替换为缺失(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)
我在这里缺少什么?我也想知道我如何能够做到这一点但是在数据框中创建一个包含新信息的新列(所以如果我陷入困境,我可以保留原始值。)
答案 0 :(得分:4)
您可以使用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)