python替换不是na值[重复]
Posted
技术标签:
【中文标题】python替换不是na值[重复]【英文标题】:python replace not na value [duplicate] 【发布时间】:2019-11-12 09:24:12 【问题描述】:我想创建一个新列并用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)
看来第二行写错了。 有什么建议吗?
【问题讨论】:
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语言dplyr包将dataframe中的NA值替换(replace)为0实战:所有NA值替换(replace)为0具体列的NA值替换(replace)为0若干列的NA值替换(replace)为0
将 DataFrame 中的 NA 替换为每个国家/地区的平均值