' float64'的总和pandas中的列类型返回float而不是numpy.float64

时间:2016-09-26 21:09:27

标签: python pandas numpy

我在pandas中有一个数据帧。我正在将数据帧的一列作为:

x = data['col1'].sum(axis=0)
print(type(x))

我已检查col1数据框中的data列的类型为float64。但x的类型为<class 'float'>。我期待x的类型为numpy.float64

我在这里失踪的是什么?

pandas version - &#39; 0.18.0&#39;,numpy version - &#39; 1.10.4&#39;,python version - 3.5.2

1 个答案:

答案 0 :(得分:3)

这似乎来自大熊猫处理nans的方式。当我在skipna=False方法中设置sum时,我得到numpy数据类型

import pandas as pd
import numpy as np

type(pd.DataFrame({'col1':[.1,.2,.3,.4]}).col1.sum(skipna=True))
#float

type(pd.DataFrame({'col1':[.1,.2,.3,.4]}).col1.sum(skipna=False))
#numpy.float64

sum方法从nansum调用pandas/core/nanops.py,这会产生相同的行为。

from pandas.core.nanops import nansum

type(sum(np.arange(10.0)))
# numpy.float64

type(nansum(np.arange(10.0)))
# float

为什么nansum正在从numpy.float64转换为float,我无法告诉你。我查看了nansum源代码,但它自己调用的函数似乎都没有产生这种变化。