python替换不是na值[重复]

Posted

技术标签:

【中文标题】python替换不是na值[重复]【英文标题】:python replace not na value [duplicate] 【发布时间】:2019-11-12 09:24:12 【问题描述】:

我想创建一个新列并用01 替换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)

看来第二行写错了。 有什么建议吗?

【问题讨论】:

df['NewCol']=df['col1'].notna().astype(int) @WeNYoBen TypeError: data type not understood @PeterChen 将其用作字符串:'int'。或者也使用 numpy 数据类型:docs.scipy.org/doc/numpy-1.14.0/reference/arrays.dtypes.html 【参考方案1】:

你可以试试:

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

希望这会有所帮助。

【讨论】:

【参考方案2】:

首先,您需要将所有 '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 视为空条目,这可能是也可能不是所需的功能。

【讨论】:

以上是关于python替换不是na值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

用R中的组中的非NA字符替换一组值的NA [重复]

R语言dplyr包将dataframe中的NA值替换(replace)为0实战:所有NA值替换(replace)为0具体列的NA值替换(replace)为0若干列的NA值替换(replace)为0

将 DataFrame 中的 NA 替换为每个国家/地区的平均值

R语言缺失值替换:缺失的值(NA)替换每个分组最近的非缺失值

将列中的 NA 替换为相邻列中的值

R语言把dataframe中的NA值替换为0