2017-05-16 14 views
1

私は方法の多くでこの問題を解決しようとした動作しませんが、それらのどれも働きました。のpythonパンダ日時日時はよく

私はdatetimepandasシリーズを変換したいと思います。

私はいくつかの小さいながらも重要な部分を見逃していかもしれないと思います。

print test["order_date"][3] 
print type(test["order_date"][3]) 

test["order_date"] = pd.to_datetime(test["order_date"], format="%Y-%m-%d %H:%M:%S") 

##have also tried 
##test["order_date"] = pd.to_datetime(test["order_date"], infer_datetime_format=True) 
##test["order_date"] = test["order_date"].apply(pd.to_datetime) 
##all turn out to be the same result 

print test["order_date"][3] 
print type(test["order_date"][3]) 

結果は以下のようであることが判明:result1970-01-01

になった理由を

20150731000001 
<type 'numpy.int64'> 

1970-01-01 05:35:50.731000001 
<class 'pandas.tslib.Timestamp'> 

私は任意のより詳細な情報が必要な場合は、親切に私に知らせてください把握することはできません。

ありがとう!

+0

間違ったフォーマットを、数20150731000001は、1970年以降、MSと解釈されるように - あなたの結果に相当します。 –

答えて

4

間違った形式を指定しました。

ことは、これを試してみてください:

In [34]: pd.to_datetime(['20150731000001'], format="%Y%m%d%H%M%S") 
Out[34]: DatetimeIndex(['2015-07-31 00:00:01'], dtype='datetime64[ns]', freq=None) 
+0

ありがとう!それはうまくいく。 –

+0

フォーマットが入力strのタイプと一致しているようです。本当にありがとう!!! –

+0

@LeighTsai、それは助けてうれしい:) – MaxU

2

DTYPEがint64あるので、それはそれは、ナノ秒単位の値を前提としています:

In[51]: 
pd.to_datetime(20150731000001, unit='ns') 
Out[51]: Timestamp('1970-01-01 05:35:50.731000001') 

それが文字列だった場合、それを正しく構文解析することができるようになります。

In[54]: 
pd.to_datetime('20150731000001') 
Out[53]: Timestamp('2015-07-31 00:00:01') 

だから、あなたが明示的に(@ MaxUの答えのように)フォーマット文字列を渡すことができますまたはstrに列のDTYPEを変換し、これを渡す:

test["order_date"] = pd.to_datetime(test["order_date"].astype(str)) 
関連する問題