在Pandas数据框中计算"inf"出现的次数

7
我们可以使用 df.isna().count() 来计算 nan 的出现次数。 是否有类似的函数可以计算 inf 的次数?

看看这个是否有帮助 https://dev59.com/WV4c5IYBdhLWcg3wSIkt。如果有,请将此问题标记为重复。 - RichieV
3个回答

7
这对我有效:
number_inf = df[df == np.inf].count()

需要确保计算 -np.inf(负无穷大) - undefined

3

使用np.isinf()函数

df = pd.DataFrame({'data' : [0,0,float('inf'),float('inf')]})


print(df)

   data
0   0.0
1   0.0
2   inf
3   inf


df.groupby(np.isinf(df['data'])).count()

       data
data       
False     2
True      2

我们需要为每一列计数,而不是整个数据框? - Naveed
1
@Naveed 抱歉,您的意思是要计算整个数据框中所有 inf 值的数量吗?也许可以使用 np.isinf(df.stack()).groupby(level=1).sum() - Umar.H
它抛出了以下错误: “TypeError:ufunc 'isinf'不支持输入类型,并且根据转换规则“safe”,输入无法安全地强制转换为任何支持的类型” - Naveed
可能是因为我有一个datetime.date列(其他两列是字符串和浮点数)。 - Naveed
1
是的,inf 只能出现在 float 列中,也许先尝试使用 df.select_dtypes('float'),然后再使用 groupby。 - Umar.H

0

你可以在一行中使用 isinf()ravel()

# Pandas Series.ravel() function returns the flattened underlying data as an ndarray.
np.isinf(df["Col"]).values.ravel().sum()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接