2017-10-27 20 views
1

私は実行時間の日付をファイル名の一部としてYYYYMMDD形式にする必要がある出力csvのスクリプトを書いています。 execution_timestampはJDBC経由で取得され、DataFrame でint64として終了します。SQLビッグint int64タイムスタンプを不正確な日付を返す

import pandas as pd 
    from dateutil import parser 

入力:

x = pd.DataFrame([1493293503289], columns=['EXECUTION_TIMESTAMP']) 
    ts= x['EXECUTION_TIMESTAMP'] 
    ts 

出力:私はパンダ データフレームに変換し、次のコードを、書かれている

0 1493293503289 
    Name: EXECUTION_TIMESTAMP, dtype: int64 

- >タイムスタンプが - >解析されYYYYMMDD

入力:

df=pd.DataFrame(ts) # create pd data frame 
    ts_conv = pd.to_datetime(df['EXECUTION_TIMESTAMP'], unit='ns')[0] 
    parser.parse(str(ts_conv)).strftime('%Y%m%d') 

出力:

'19700101' 

しかしts_conv = Timestamp('1970-01-01 00:24:53.293503289')

私は、実際の実行時間は、私は非常に適切な日付にこれを変換する任意の提案をいただければ幸いです'2017-04-27-11.45.03' であることを知っています。

+0

間違ったユニットを使用しているように、 'ユニット= 'ms''てみてくださいようです。 – gseva

答えて

1

@gsevaの設定unit='ms'からの提案に続いて、この解析は正しいYYYYMMDD文字列を提供します。単位はミリ秒ではなくナノ秒であった。

入力:

ts_conv = pd.to_datetime(df['EXECUTION_TIMESTAMP'], unit='ms')[0] 
    parser.parse(str(ts_conv)).strftime('%Y%m%d') 

出力:

'20170427' 
関連する問題