作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有各种 csv 文件,并将它们导入为 DataFrame。问题是许多文件对缺失值使用不同的符号。有些使用 nan,有些使用 NaN、ND、None、missing 等,或者只是将条目留空。有没有办法用 np.nan 替换所有这些值?换句话说,数据框中的任何非数字值都变成 np.nan。感谢您的帮助。
最佳答案
我发现了一个我认为相对优雅但也很健壮的方法:
def isnumber(x):
try:
float(x)
return True
except:
return False
df[df.applymap(isnumber)]
如果不清楚:您定义一个函数,仅当您拥有的任何输入都可以转换为 float 时才返回 True
。然后,您使用该 bool 数据框过滤 df
,它会自动将 NaN
分配给您没有过滤的单元格。
我尝试的另一个解决方案是将 isnumber
定义为
import number
def isnumber(x):
return isinstance(x, number.Number)
但我不太喜欢这种方法的是,您可能会不小心将数字作为字符串,因此您会错误地过滤掉它们。这也是一个偷偷摸摸的错误,看到数据框显示字符串 "99"
与数字 99
相同。
编辑:
在你的情况下,你可能仍然需要 df = df.applymap(float)
过滤后,因为 float
适用于 的所有不同大小写'nan'
,但在您明确转换它们之前,它们仍将被视为数据框中的字符串。
关于python - 如何在 Pandas 数据框中用 NaN 替换所有非数字条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41938549/
我是一名优秀的程序员,十分优秀!