2016-12-21 10 views
1

エポックからのミリ秒に日付文字列を変換しようと戻って日付文字列に次のコードを使用する場合:Python Pandas:日付文字列をエポックと日付文字列に変換してからミリ秒単位に変換しますか?

('2013-01-14 00:00:00', ' mls = ', 1358107200.0, ' date = ', Timestamp('1970-01-16 17:15:07.200000')) 

をも:

def date_to_millis(s) :                       
    t = pd.Timestamp(s)                       
    return time.mktime(t.timetuple())                   

s = "2013-01-14 00:00:00"                      
mls = date_to_millis(s)                       
dateStr = pd.to_datetime(mls, unit='ms')                   
print(s, " mls = ", mls, " date = " , dateStr) 

私は、文字列が一致しない、次の結果を得ますこのコードをIPythonのインタラクティブセッションで再実行すると、エラーが発生します。

AttributeError       Traceback (most recent call last)          
<ipython-input-9-6a819827f8f2> in <module>()                  
----> 1 time.mktime(t.timetuple())                    

AttributeError: 'Timestamp' object has no attribute 'mktime'              

おそらく可能性がありますロング?エポックと日付文字列に戻ってからミリ秒に日付文字列を変換するには?

答えて

1

date_to_millis関数がミリ秒ではなく秒に変換されています。

時間タプルの代わりに "to_datetime64"を使用する必要があります。

# %% 
import pandas as pd 
import time 
def date_to_millis(s) :                       
    return pd.to_datetime(s).to_datetime64()                     


s = "2013-01-14 00:00:00"                      
mls = date_to_millis(s)                       
dateStr = pd.to_datetime(mls, unit='ms')                   
print(s, " mls = ", mls, " date = " , dateStr) 
# %% 
2013-01-14 00:00:00 mls = 2013-01-14T00:00:00.000000000 date = 2013-01-14 00:00:00 

print(float(mls)) 
1.3581216e+18 
関連する問題