2016-11-21 3 views
7

私はこれは私がシリーズ、それはintとして追加された最初の時間に日付を割り当てると、パンダの故障、(あまりにもv.18.1及び19)パンダのシリーズを持つことがあると思います(エラー)、それがdatetime(正しい)として追加された2回目、私は理由を理解できません。このコードで例えばPythonのパンダシリーズの故障日時

import datetime as dt 
import pandas as pd 
series = pd.Series(list('abc')) 
date = dt.datetime(2016, 10, 30, 0, 0) 
series["Date_column"] =date 
print("The date is {} and the type is {}".format(series["Date_column"], type(series["Date_column"]))) 
series["Date_column"] =date 
print("The date is {} and the type is {}".format(series["Date_column"], type(series["Date_column"]))) 

出力は次のようになります。

The date is 1477785600000000000 and the type is <class 'int'> 
The date is 2016-10-30 00:00:00 and the type is <class 'datetime.datetime'> 

あなたが見ることができるように、最初の時間は、それは常にint型の代わりにdatetime型として値を設定します。

助けてもらえますか? あらかじめありがとうございます。 Javi。

+1

この現象の原因はわかりませんが、文字列に日付を追加するときは注意が必要です。列ではなく行を追加することに気づいていますか? – IanS

+1

これは、私にはバグのようなにおいがする日時は、最初の割り当てにintに強要されているように見えるので、 '混合dtypesをサポートSeries'が、その後同じインデックスラベルの位置を上書きすることは予想される動作を生成します。私は[github](https://github.com/pandas-dev/pandas/issues)の問題を投稿したい – EdChum

+0

ありがとうEdChum – bracana

答えて

0

この理由は、一連の「オブジェクト」タイプとパンダのデータフレーム(または直列)の列は、均一タイプのものであるということです。あなたはDTYPE(またはDataFrame.dtypes)でこれを調べることができます。

series = pd.Series(list('abc')) 
series 
Out[3]: 
0 a 
1 b 
2 c 
dtype: object 

In [15]: date = dt.datetime(2016, 10, 30, 0, 0) 
date 
Out[15]: datetime.datetime(2016, 10, 30, 0, 0) 

In [18]: print(date) 
2016-10-30 00:00:00 

In [17]: type(date) 
Out[17]: datetime.datetime 

In [19]: series["Date_column"] = date 
In [20]: series 

Out[20]: 
0        a 
1        b 
2        c 
Date_column 1477785600000000000 
dtype: object 

In [22]: series.dtype 

Out[22]: dtype('O') 

のみジェネリック「オブジェクト」DTYPEは、(シリーズへのdatetime.datetimeオブジェクトを挿入し、あなたのケースで)任意のPythonオブジェクトを保持することができます。

さらに、パンダシリーズは、混合型ではなく、パンダのデータフレームとシリーズやナンシーの計算上の利点を利用する目的を奪うナンシーアレイをベースにしています。

あなたの代わりに)(Pythonのリストを使用してもらえますか?またはDataFrame()?

関連する問題