2017-07-14 153 views
0

早上好!TypeError:strptime()參數1必須是字符串,而不是浮點數

我有一系列事件與關聯的日期。事件日期作爲一系列字符串值存儲在我加載到Python的數據框中的列中。數據框包含具有值的其他列。我想將列「事件」中的值轉換爲日期時間對象,將它們存儲在列表中,然後使用matplotlib繪製該列表以創建時間序列。

我的數據框看起來是這樣的:

  date   value_1 event  other_event 
37  07/02/2015 265.09  07/02/2015 NaN 
38  08/02/2015 278.59  08/02/2015 NaN 
156  06/06/2015 146.07  06/06/2015 NaN 
180  30/06/2015 133.56  30/06/2015 NaN 
243  01/09/2015 280.27  01/09/2015 01/09/2015 

的Python告訴我,列數據爲Name: event, dtype: object,我假設意味着它包含字符串值。我的代碼中也有df.event.apply(str),我認爲它會將我的事件列中的值轉換爲字符串值。

然後,我有這樣的代碼:

FMT = '%d/%m/%Y' 
event_list = [] 

for i in range(0, len(event)): 
    event_list.append(datetime.datetime.strptime(event[i], FMT)) 

不過,此行會返回一個錯誤:

Traceback (most recent call last): 

    File "<ipython-input-39-e778a465e858>", line 2, in <module> 
    event_list.append(datetime.datetime.strptime(event[i], FMT)) 

TypeError: strptime() argument 1 must be string, not float 

任何意見,因爲我要去哪裏錯將受到歡迎。

+0

請問你的變量'event'是什麼樣子? – randomir

+0

你能否進一步解釋 - 你的意思是對象類型?它的一些值包含在我發佈在OP中的數據框中。 –

+0

你得到了什麼'len(event)'和'event [0]'? – randomir

回答

2

要使用matplotlib繪製有問題的數據幀,您可以首先使用pandas.to_datetime將相關列轉換爲日期時間。

u = u"""i   date   value_1 event  other_event 
37  07/02/2015 265.09  07/02/2015 NaN 
38  08/02/2015 278.59  08/02/2015 NaN 
156  06/06/2015 146.07  06/06/2015 NaN 
180  30/06/2015 133.56  30/06/2015 NaN 
243  01/09/2015 280.27  01/09/2015 01/09/2015""" 

import io 
import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.read_csv(io.StringIO(u), delim_whitespace=True) 
df["event"] = pd.to_datetime(df["event"], format="%d/%m/%Y") 

plt.plot(df["event"], df["value_1"]) 
plt.gcf().autofmt_xdate() 
plt.show() 

enter image description here

+0

謝謝,我之前沒有遇到'pd.to_datetime'命令,它將非常有用。 –

相關問題