2017-01-04 8 views
2

に変換私は以下のようにフロート形式で日付と2000+行でパンダのデータフレームを持っている:(2016, 11, 30, 23, 55, 29)反復フロートタイムスタンプのパンダDATAFRAME通じ、日付時刻

私の日時値を表す

42704.99686342593理想的にはd/m/Y H/M/Sという正しいdatetime形式に浮動小数点数を変換し、これを新しいデータフレームに保存することです。

Python 2.7を使用しています。

私は重複した質問を見つけることができず、同様の質問に対する解決策で問題を解決することができなかったので、助けに感謝します。

ありがとうございました。

+1

質問にdf.head()を含めてください。 – MYGz

+0

42704は2016年11月11日とどのように等しくなりますか? –

答えて

3

Excelフォーマットはserial dateと思われます。

最も単純には25569 substractとパラメータunit='d'to_datetimeを使用している:

df = pd.DataFrame({'date':[42704.99686342593,42704.99686342593]}) 
print (df) 
      date 
0 42704.996863 
1 42704.996863 

print (pd.to_datetime(df.date - 25569, unit='d')) 

0 2016-11-30 23:55:28.963200 
1 2016-11-30 23:55:28.963200 
Name: date, dtype: datetime64[ns] 

もう一つの解決策は、substract timedeltaまたはoffsetです:

print (pd.to_datetime(df.date, unit='d') - pd.to_timedelta('25569 Days')) 
0 2016-11-30 23:55:28.963200 
1 2016-11-30 23:55:28.963200 
Name: date, dtype: datetime64[ns] 

print (pd.to_datetime(df.date, unit='d') - pd.offsets.Day(25569)) 
0 2016-11-30 23:55:28.963200 
1 2016-11-30 23:55:28.963200 
Name: date, dtype: datetime64[ns] 

はあなたありがとうlink

+0

++心の読書! :-) – MaxU

+0

減算と乗算の値は何ですか? – MYGz

+0

@MYGz、それは逆の造語の結果だと思います – MaxU