python replace not na value

时间:2019-07-01 18:07:36

标签: python pandas replace

我想创建一个新列,并用NA0替换1而不丢失值。

#df
col1  
1      
3

5

6

我想要什么:

#df
col1   NewCol
1           1
3           1
            0
5           1
            0
6           1

这是我尝试过的:

df['NewCol']=df['col1'].fillna(0)
df['NewCol']=df['col1'].replace(df['col1'].notnull(), 1)

第二行似乎不正确。
有什么建议吗?

2 个答案:

答案 0 :(得分:1)

首先,您需要将所有“ na”转换为“ 0”。您如何执行此操作将因范围而异。 对于单个列,您可以使用:

df['DataFrame Column'] = df['DataFrame Column'].fillna(0)

对于整个数据框,您可以使用:

df.fillna(0)

此后,您需要将所有非零替换为1。您可以这样做:

for index, entry in enumerate(df['col']):
    if entry != 0:
        df['col'][index] = 1

请注意,此方法将0计数为空条目,这可能是也可能不是所需的功能。

答案 1 :(得分:1)

您可以尝试:

df['NewCol'] = [*map(int, pd.notnull(df.col1))]

希望这会有所帮助。