大熊猫:sum()返回无穷大的值

时间:2018-10-21 06:30:40

标签: python pandas sum infinite

我有一个DataFrame,其列的数据类型为float16,最大值为65536。当我在pandas中调用sum()以求和该列的所有值时,由于值超过,我得到了无限的“ inf”值范围。

这是求和输入数据和输出的示例:

input sample and output

由于sum()函数的输出值的数据类型自动跟随该列的数据类型,所以我想问一下是否有任何方法可以将panda中的sum值转换为避免不定式值?

2 个答案:

答案 0 :(得分:1)

首先想到的是传递dtype=np.float64参数。

df.sum(axis=1,dtype=np.float64)

但是,这将返回ValueError:

  

ValueError:熊猫不支持'dtype'参数   sum()的实现


可能的解决方法:

使用np.sum()(熊猫的基础库)来传递dtype。

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'col1': [35000.0, 35000.0],
    'col2': [35000.0, 35000.0]
})

df['col1'] = df['col1'].astype(np.float16)
df['col2'] = df['col2'].astype(np.float16)

#print(df.sum(axis=1)) # --> results in inf 
#print(df.sum(axis=1,dtype=np.float64)) # --> results in error message
print(np.sum(df.values, dtype=np.float64, axis=1)) # --> works

答案 1 :(得分:1)

到目前为止,还没有解决方案,可能的解决方法可能是@Anton vBR。 但是,当在dtype float16的数据帧列上执行归约时,它已经存在一个错误,这是令人惊讶的行为:

[已经在github上为此打开了一个错误[(https://github.com/pandas-dev/pandas/issues/22841