首页 > 解决方案 > UTC 日期时间问题 - 如何适合冒号 - 时间数据“2021-03-11 09:30:01-05:00”与格式“%Y%m%d %H:%M:%S %z”不匹配'

问题描述

我正在尝试'2021-03-11 09:30:01-05:00'使用以下代码将字符串转换为日期时间。

看来我的字符串是:介于 05 和 00 之间的冒号 ( ),并且该冒号不是默认%z日期格式。

如何将我的字符串转换为 EST 日期时间?

df = pd.read_csv(mypath + "ticks.csv")
df['time'] = pd.to_datetime(df['time'], format="'%Y-%m-%d %H:%M:%S%z'")
df['time'] = df['time'].dt.tz_localize('US/Eastern')

标签: pythondatetime

解决方案


以下与您尝试的略有不同对我来说效果很好。

df = pd.read_csv('testfile.csv')

df['time'] = pd.to_datetime(df['time'], utc=True)
df['time'] = df['time'].dt.tz_convert('US/Eastern')

结果:

In [115]: df['time']
Out[115]: 
0       2021-03-11 09:30:01-05:00
1       2021-03-11 09:30:02-05:00
2       2021-03-11 09:30:14-05:00
3       2021-03-11 09:30:14-05:00
4       2021-03-11 09:30:14-05:00
                   ...           
35518   2021-03-15 15:59:53-04:00
35519   2021-03-15 15:59:54-04:00
35520   2021-03-15 15:59:56-04:00
35521   2021-03-15 15:59:56-04:00
35522   2021-03-15 15:59:57-04:00
Name: time, Length: 35523, dtype: datetime64[ns, US/Eastern]

推荐阅读