我已经搜索了过去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/

10-09 17:12
查看更多