2016-01-28 81 views
0

我有一個數據幀,名爲「datetime」的數據框中有一列包含時間信息,例如「2014-01-09 09:15:01」。我想要做的是將「2014-01-09 09:15:01」轉換爲「2014-01-09 09:15:01.000000」。 我所做的是將時間格式轉換爲Pandas中有十進制數

data = pd.to_datetime(trade_data['datetime'], format="%Y-%m-%d %H:%M:%S%.f"). 

但是,這是行不通的。

ValueError: time data '2014-01-20 07:05:36.500000' does not match format '%H:%M:%S.%f' 

如何解決這個問題?謝謝。

編輯 'datetime'列中包含什麼。

>>> data['datetime'][:20] 
date 
2014-01-20 2014-01-20 07:05:36.500000 
2014-01-20 2014-01-20 09:14:00.500000 
2014-01-20 2014-01-20 09:15:00.500000 
2014-01-20   2014-01-20 09:15:01 
2014-01-20 2014-01-20 09:15:01.500000 
2014-01-20   2014-01-20 09:15:02 
2014-01-20 2014-01-20 09:15:02.500000 
2014-01-20   2014-01-20 09:15:03 
2014-01-20 2014-01-20 09:15:03.500000 
2014-01-20   2014-01-20 09:15:04 
2014-01-20 2014-01-20 09:15:04.500000 
2014-01-20   2014-01-20 09:15:05 
2014-01-20 2014-01-20 09:15:05.500000 
2014-01-20   2014-01-20 09:15:06 
2014-01-20 2014-01-20 09:15:06.500000 
2014-01-20   2014-01-20 09:15:07 
2014-01-20 2014-01-20 09:15:07.500000 
2014-01-20   2014-01-20 09:15:08 
2014-01-20 2014-01-20 09:15:08.500000 
2014-01-20 2014-01-20 09:15:09.500000 
Name: datetime, dtype: object 

回答

1

你可以做到這一點與dt.strftime

s = pd.Series(["2014-01-09 09:15:01"]) 
s = pd.to_datetime(s) 
res = s.dt.strftime("%Y-%m-%d %H:%M:%S.%f") 

In [115]: res 
Out[115]: 
0 2014-01-09 09:15:01.000000 
dtype: object 

:它會與pandas版本> = 0.17.0

編輯

工作,爲pandas版本< 0.17.0你可以使用datetime.strftimeapply

from datetime import datetime 
res1 = s.apply(lambda x: datetime.strftime(x, "%Y-%m-%d %H:%M:%S.%f")) 

In [250]: res1 
Out[250]: 
0 2014-01-09 09:15:01.000000 
dtype: object 
+0

THX,但它不工作。 AttributeError:'DatetimeProperties'對象沒有屬性'strftime'。我也不能運行你的示例代碼,它給出了相同的錯誤信息。 – epx

+0

這將與熊貓版本>'0.17.0'一起使用。看看編輯問題中的鏈接。 –

+0

謝謝,我會更新我的熊貓。 – epx

1

您可以嘗試map

print df 
           datetime 
2014-01-20 2014-01-20 09:15:00.500000 
2014-01-20   2014-01-20 09:15:01 
2014-01-20 2014-01-20 09:15:01.500000 
2014-01-20   2014-01-20 09:15:02 

df['datetime'] = pd.to_datetime(df['datetime']) 
print df 
          datetime 
2014-01-20 2014-01-20 09:15:00.500 
2014-01-20 2014-01-20 09:15:01.000 
2014-01-20 2014-01-20 09:15:01.500 
2014-01-20 2014-01-20 09:15:02.000 

df['datetime'] = df['datetime'].map(lambda x: x.strftime('%Y-%m-%d %H:%M:%S.%f')) 
print df 
           datetime 
2014-01-20 2014-01-20 09:15:00.500000 
2014-01-20 2014-01-20 09:15:01.000000 
2014-01-20 2014-01-20 09:15:01.500000 
2014-01-20 2014-01-20 09:15:02.000000 
+0

感謝您的建議。 – epx

相關問題