将日期字符串转换为df整列的日期时间

时间:2018-04-19 15:11:43

标签: python-3.x pandas datetime

df = pd.read_csv('bitcoin.csv')
print(df)

给出

      Date          Open     High     Low      Close    Volume  
0     Apr 16, 2018  8337.57  8371.15  7925.73  8058.67  5,631,310,000   
1     Apr 15, 2018  7999.33  8338.42  7999.33  8329.11  5,244,480,000  ....

我试过

pd.to_datetime(pd.Series(['Date']), format = '%b %d, %Y')

但得到了

TypeError:无法识别的值类型:&& ValueError:时间数据'日期'不符合格式'%b%d%Y' (匹配)

我也试过

df['Date'] = df['Date'].apply(lambda x: datetime.datetime.strptime(x, '%b %d, %Y')

但在解析

时遇到了SyntaxError:意外的EOF

运行时

print(df['Date'])

打印后说

Name: Date, Length: 1567, dtype: object

不确定这里发生了什么?它已经是日期时间对象吗?

2 个答案:

答案 0 :(得分:0)

df['Date'] = pd.to_datetime(df.Date).dt.strftime('%b %d, %Y')

<强>输出

0  Apr  16,    Jan 01, 1970
1  Apr  15,    Jan 01, 1970
Name: Date, dtype: object

答案 1 :(得分:0)

看起来你最后错过了一个额外的括号:

df['Date'] = df['Date'].apply(lambda x: datetime.datetime.strptime(x, '%b %d, %Y'))

我建议你做这样的事情,加入@COLDSPEED评论:

df['Date'] = df['Date'].apply(lambda x: pd.to_datetime(x, format = '%b %d, %Y', errors = 'coerce'))