2016-10-18 10 views
0

私は、pandasがDataFrameに追加されたときにdatetimeスタンプをどのように扱うのかを理解しようとしています。私のマシンでは、日付は4時間早く保存されます。これをどうやって止めることができますか?datetime.datetimeをdatetime64に変換するPandasにタイムゾーンが影響する

例:

import pandas as pd 
import datetime 
test = pd.DataFrame({'A':['a','b','c'],'B':[1,2,3]}) 
test 
Out[31]: 
    A B 
0 a 1 
1 b 2 
2 c 3 

dt = datetime.datetime(2016,10,4) 
test['dt']=dt 
test 
Out[35]: 
    A B   dt 
0 a 1 2016-10-04 
1 b 2 2016-10-04 
2 c 3 2016-10-04 

をこれまでのところは良いが、私は配列として値を見たときに私が取得:

test.dt.unique() 
Out[36]: array(['2016-10-03T20:00:00.000000000-0400'], dtype='datetime64[ns]') 

がどのように私は2016-10-04T00としてこれを維持することができます: ...
私はそれを日付オブジェクトとして維持し、コードが実行されているタイムゾーンに関係なく同じ値を持っていますか?

ありがとうございます。

+0

はちょうどパンダのメソッドを使用します。 'テスト[ 'DT'] = pd.to_datetime( '2016年10月4日')' – MaxU

+0

おかげ@MaxUを、それはうまくいきませんでした。パンダはマシンのローカルタイムゾーンを追加します。 https://mail.scipy.org/pipermail/numpy-discussion/2013-April/066038.html – Stein

+0

これを試してください: 'test ['dt'] = pd.to_datetime( '2016-10-04'、utc =真) ' – MaxU

答えて

0

これを投稿してから1時間ほどで何かが見つかりました。それは理想的な解決策から遠いですが、私の目的のために働くでしょう。

まず、私は参考のためにnumpyの中ナイーブタイムゾーンの不足に関するいくつかの議論が見つかりました:
https://mail.scipy.org/pipermail/numpy-discussion/2013-April/066038.html

注:私は私の目的のためにnumpyの1.8.1とパンダ0.14.0

の午前マシンのローカルタイムゾーンですべてを真夜中に強制しようとしています。

tz_adjust = np.timedelta64(int(-int(str(np.datetime64(datetime.datetime.now()))[-5:])/100),'h') 
test['dt']=np.datetime64(dt) + tz_adjust 
test 
Out[75]: 
    A B     dt 
0 a 1 2016-10-04 04:00:00 
1 b 2 2016-10-04 04:00:00 
2 c 3 2016-10-04 04:00:00 
test.dt.unique() 
Out[76]: array(['2016-10-04T00:00:00.000000000-0400'], dtype='datetime64[ns]') 
0

上記の@MaxUの2番目のコメントも参照してください。

test['dt'] = pd.to_datetime('2016-10-04', utc=True) 
関連する問題