python替换不是na值

python替换不是na值,python,pandas,replace,Python,Pandas,Replace,我想创建一个新列,并用0和1替换NA和不丢失的值 #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'].

我想创建一个新列,并用
0
1
替换
NA
和不丢失的值

#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)
第二行似乎不正确。

有什么建议吗

首先,您需要将所有“na”转换为“0”。您如何做到这一点将因范围而异。 对于单个列,您可以使用:

df['DataFrame Column'] = df['DataFrame Column'].fillna(0)
df.fillna(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计为空条目,这可能是也可能不是所需的功能

您可以尝试:

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

希望这有帮助。

df['NewCol']=df['col1'].notna().astype(int)
@WeNYoBen
TypeError:数据类型不可理解
@PeterChen将其用作字符串:“int”。或者也使用numpy数据类型: