2016-05-23 2 views
1

Pandas Seriesコンストラクタは、キーがdatetimeの要素の1つを含むタプルである辞書を渡すと、NaN値を生成します。コードは以下の通りです。Pandas SeriesコンストラクタでNaN値が生成される

奇妙なことに、キーが単一の日時であるか、日時のないタプルであっても、それは起こっていません。

この動作はpandas 0.15.0で導入されたようですが、0.14.1で問題なく動作しますが、リリースノートには何も見つかりません。

私はWindows上で64ビットPython 2.7を実行しています。

何か助けていただければ幸いです。

import datetime 
import pandas as pd 

d = { 
    (datetime.date(2016, 5, 1), 'k1'): 1, 
    (datetime.date(2016, 5, 2), 'k2'): 2 
} 

print 'Dictionary:' 
print d 
print 

s = pd.Series(d) 
print 'Series:' 
print s 
print 

df = pd.DataFrame(d.values(), index=pd.MultiIndex.from_tuples(d.keys())) 
print 'DataFrame:' 
print df 
print 

出力:

Dictionary: 
{(datetime.date(2016, 5, 1), 'k1'): 1, (datetime.date(2016, 5, 2), 'k2'): 2} 

Series: 
2016-05-01 k1 NaN 
2016-05-02 k2 NaN 
dtype: float64 

DataFrame: 
       0 
2016-05-01 k1 1 
2016-05-02 k2 2 
+0

これは奇妙です。 'datetime.date'を使うときと同じ振る舞いをしますが、代わりに' datetime.datetime'を使うと書いたように動作します。 'NaN'出力のインデックスを見ると、pandasは各日付に時間成分を追加しています。おそらく、その変換を行うバグがありますか? – root

+0

iircこれは0.18.0に固定されています(0.17.1も同じです)。 – Jeff

+1

@ジェフ私は0.18.1を使用していますが、同じ動作を見ています。 – root

答えて

1

奇妙です!バグでなければならない。ここで

私の実験の一部です:あなたが何をしたか

s = pd.Series({(datetime.date(2016, 5, 1), 'k1'): 1, 
       (datetime.date(2016, 5, 2), 'k2'): 2}) 

s 

2016-05-01 k1 NaN 
2016-05-02 k2 NaN 
dtype: float64 

実験#1:あなたが欲しいものを、strftime戻り値の文字列を使用していないが。しかし、仕事。

s = pd.Series({(datetime.date(2016, 5, 1).strftime('%Y-%m-%d'), 'k1'): 1, 
       (datetime.date(2016, 5, 2).strftime('%Y-%m-%d'), 'k2'): 2}) 

s 

2016-05-01 k1 1 
2016-05-02 k2 2 
dtype: int64 

実験#2:pd.to_datetimeを使用してください。これは動作します

s = pd.Series({(pd.to_datetime(datetime.date(2016, 5, 1)).strftime('%Y-%m-%d'), 'k1'): 1, 
       (pd.to_datetime(datetime.date(2016, 5, 2)).strftime('%Y-%m-%d'), 'k2'): 2}) 

s 

2016-05-01 k1 1 
2016-05-02 k2 2 
dtype: int64 

実験#3:使用pd.Timestamp。これも動作します

s = pd.Series({(pd.Timestamp(datetime.date(2016, 5, 1)), 'k1'): 1, 
       (pd. Timestamp(datetime.date(2016, 5, 2)), 'k2'): 2}) 

s 

2016-05-01 k1 1 
2016-05-02 k2 2 
dtype: int64 
関連する問題