2016-09-26 13 views
4

私はパンダにデータフレームを持っています。私はdataデータフレーム内col1列がタイプfloat64であることを確認しているpandasの 'float64'の列の型numpy.float64の代わりにfloatを返します

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

:私はとしてデータフレームの列の合計を取っています。しかし、xのタイプは<class 'float'>です。私はxのタイプがnumpy.float64であると予想していました。

私はここで何が間違っていますか?

パンダバージョン - '0.18.0'、numpyのバージョン - '1.10.4'、Pythonのバージョン - 3.5.2

+1

これを再現できません。これを再現する生データとコードを投稿する必要があります。私はdtypeが 'np.float64'のままであることを確認します – EdChum

+0

pandas 0.18.1との間で' numpy.float64' numpy 1.11.1。 – root

+0

私はそれを再現できます: 'type(pd.DataFrame({'col1':[.1、.2、.3、.4]})。col1.sum())' - パンダ0.18.1、numpy 1.11。 1、Python 3.5.1 – MaxU

答えて

3

これは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 

nansumfloatnumpy.float64から変換されたのはなぜ、私はあなたを伝えることができませんでした。私は nansumのソースコードを見てきましたが、それ自体が呼び出す関数のどれもその変更を生成していないようです。

+0

バージョンを指定できますか? [私はそこにいる](http://stackoverflow.com/questions/39712435/sum-of-float64-column-type-in​​-pandas-return-float-instead-of-numpy-float64#comment66725001_39712435)私は '両方のためのnp.float64'。私は、バグレポートが順調であると思われますが、違いがどこにあるのだろうかと思います。 –

+1

パンダ0.18.1; numpy 1.11.0; Python 3.5.1; Ubuntu 14.04 – Elliot

+2

'skipna'が' True'のときpandasは 'False'のときに' bottleneck.nansum() 'を使用しようとします。パンダは' numpy.sum() 'を呼び出します。 'bottleneck'がインストールされていない場合、両方とも' numpy'関数を使います。 – HYRY

関連する問題