[英]Convert string date variable to datetime.datetime date variable in pandas
我有一個date
字符串。 我知道如何將其轉換為datetime.datetime對象(當不丟失!!),但是問題是我缺少一些值。 而且我做不到。
假設input_date是原始日期變量,它是字符串。 我想產生input_date_fmt變量,它將是datetime.datetime。我正在嘗試運行以下命令
DF['input_date_fmt'] = np.array([datetime.datetime.strptime(x, "%m/%d/%Y").date()
for x in DF['input_date']])
但是錯誤是
ValueError: time data 'nan' does not match format '%m/%d/%Y'
誰能幫忙嗎?
如果數據框中有字符串值“ nan”:
>>> df = pd.DataFrame({'input_date':['01/01/2003', '02/29/2012', 'nan', '03/01/1995']})
>>> df
input_date
0 01/01/2003
1 02/29/2012
2 nan
3 03/01/1995
您可以先將其轉換為NaN,然后再轉換為日期:
>>> df.ix[df['input_date'] == 'nan', 'input_date'] = np.NaN
>>> df
input_date
0 01/01/2003
1 02/29/2012
2 NaN
3 03/01/1995
然后,您可以進行轉換。 但是更簡單的方法是使用向量化操作to_datetime將字符串轉換為datetime:
>>> df = pd.DataFrame({'input_date':['01/01/2003', '02/29/2012', 'nan', '03/01/1995']})
>>> pd.to_datetime(df['input_date'])
0 2003-01-01 00:00:00
1 2012-02-29 00:00:00
2 NaT
3 1995-03-01 00:00:00
您可以使用regexp來僅解析有效日期:
DF['input_date_fmt'] = np.array([datetime.datetime.strptime(x, "%m/%d/%Y").date()
for x in DF['input_date']] if re.match('(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/(19|20)\d\d', x))
但是我同意Satoru.Logic。 您將如何處理無效值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.