2017-06-26 9 views
2

大きなcsvファイルをJupyterノートブックに読み込んでおり、Epoch/Unixタイムスタンプとして16桁の数字(1352160000000000など)の列が含まれています。16桁の数字を人間が判読可能な日付に変換できません

私はこの番号をオンラインのEpoch/Unixタイムスタンプコンバータサイトでチェックし、それがわかっている時間を返します(GMT:Tuesday、November 6、2012 12:00:00 AM)。

私はデータフレームでこの数値を人間が判読可能な形式に変換するのに、エラーが発生するか、または(1970-01になります)df['TIME'] = pd.to_datetime(df['TIME'], unit='u')次のコードを使用しました。 -16 15:36:00.000)。

どこの人が私に間違っているのか、私は何が欠けているのかを指摘できますか?

+0

Linuxでは、私は '8月30日01:00ダイ取得します:00 CET 42850214'である。正しいタイムスタンプは 'date -d @ 1352160000'である。だから最初に1Mで分割しなければなりません。 –

答えて

6

「us」ユニットを使用する必要があります。

df['TIME'] = pd.to_datetime(df['TIME'], unit='us') 

pd.to_datetime(1352160000000000,unit='us') 
Out[24]: Timestamp('2012-11-06 00:00:00') 
+0

この回答をお寄せいただきありがとうございます。私は、最初に列全体を1,000,000で除算し、次に 'unit =' s ''を設定することよりもはるかにきれいに機能します。 – DreamingMan

2

unitマイクロですので、あなたがunitとして'us'を使用する必要があります。

pd.to_datetime(1352160000000000, unit='us')

例えば:

>>> pd.to_datetime(1352160000000000, unit='us') 
Timestamp('2012-11-06 00:00:00') 
+0

この回答に感謝します。上記のように、私の回避策よりもはるかに優れていました。 – DreamingMan

関連する問題