我已经搜索了过去30分钟的答案,但唯一的解决方案要么是单列的,要么是R中的。我有一个数据集,我想在其中分别将(“y/n”)值更改为1和0。我觉得复制和粘贴17次以下的代码效率非常低。
df.loc[df.infants == 'n', 'infants'] = 0
df.loc[df.infants == 'y', 'infants'] = 1
df.loc[df.infants == '?', 'infants'] = 1
我的解决方案如下。这不会导致错误,但数据框中的值不会更改。我假设我需要做一些类似df=df_new的事情。但是怎么做呢?
for coln in df:
for value in coln:
if value == 'y':
value = '1'
elif value == 'n':
value = '0'
else:
value = '1'
编辑:这个数据集中有17列,但我希望处理的另一个数据集包含56列。
republican n y n.1 y.1 y.2 y.3 n.2 n.3 n.4 y.4 ? y.5 y.6 y.7 n.5 y.8
0 republican n y n y y y n n n n n y y y n ?
1 democrat ? y y ? y y n n n n y n y y n n
2 democrat n y y n ? y n n n n y n y n n y
3 democrat y y y n y y n n n n y ? y y y y
4 democrat n y y n y y n n n n n n y y y y
最佳答案
这应该有效:
for col in df.columns():
df.loc[df[col] == 'n', col] = 0
df.loc[df[col] == 'y', col] = 1
df.loc[df[col] == '?', col] = 1
关于python - 如何更改数据框Python中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45070896/