gpt4 book ai didi

python - 如何在 Pandas 数据框中用 NaN 替换所有非数字条目?

转载 作者:太空狗 更新时间:2023-10-30 00:09:33 26 4
gpt4 key购买 nike

我有各种 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com