我在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
答案 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
源代码,但它自己调用的函数似乎都没有产生这种变化。