Python 总和';浮动64';返回float而不是numpy.float64中的列类型
我有一个熊猫的数据框。我将数据帧的一列之和作为:Python 总和';浮动64';返回float而不是numpy.float64中的列类型,python,pandas,numpy,Python,Pandas,Numpy,我有一个熊猫的数据框。我将数据帧的一列之和作为: x = data['col1'].sum(axis=0) print(type(x)) 我已经检查了datadataframe中的col1列是否为float64类型。但是x的类型是。我希望x的类型是numpy.float64 我在这里错过了什么 pandas版本--'0.18.0',numpy版本--'1.10.4',python版本--3.5.2这似乎来自pandas处理NAN的方式。当我在sum方法中设置skipna=False时,我得到n
x = data['col1'].sum(axis=0)
print(type(x))
我已经检查了data
dataframe中的col1
列是否为float64
类型。但是x
的类型是
。我希望x
的类型是numpy.float64
我在这里错过了什么
pandas版本--'0.18.0',numpy版本--'1.10.4',python版本--3.5.2这似乎来自pandas处理NAN的方式。当我在
sum
方法中设置skipna=False
时,我得到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
方法正在从pandas/core/nanops.py
调用nansum
,这将产生相同的行为
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的源代码,但它本身调用的函数似乎都没有产生这种变化。无法复制,您需要发布原始数据和复制这种变化的代码,我观察到数据类型在使用pandas 0.18.1和numpy 1.11.1时始终保持np.float64
。我可以复制它:类型(pd.DataFrame({'col1':[.1,2,3,4]}).col1.sum())
-pandas 0.18.1,numpy 1.11.1,Python 3.5.1是您的Python二进制文件32位还是64位?我可以用@MaxU在64位Python安装上发布的代码重现错误。您可以指定您的版本吗?我得到了这两个的np.float64
。我怀疑一个bug报告可能是正确的,但我想知道区别在哪里;numpy 1.11.0;python 3.5.1;Ubuntu 14.04当skipna
为True
时,pandas将尝试使用瓶颈.nansum()
,当False
时,pandas调用numpy.sum()
。如果未安装瓶颈
,则两者都使用numpy
功能。