我有一个带有DataTime列的数据框(Timezone的格式不同)。看起来时区是UTC,但我想将列转换为pd.to_datetime
,这是失败的。这是问题#1。由于失败,我无法在该时间段内执行任何日期时间操作,例如按日期列出组/计算一天中的日期/小组,依此类推。这是我的数据框df_res
DateTime
2017-11-02 19:49:28-07:00
2017-11-27 07:32:22-08:00
2017-12-27 17:01:15-08:00
命令的OUTPUT
df_res["DateTime"] = df_res["DateTime"].dt.tz_convert('America/New_York')
AttributeError: Can only use .dt accessor with datetimelike values
我什么时候转换为datetime
df_res['DateTime'] = pd.to_datetime(df_res['DateTime'])
ValueError: Tz-aware datetime.datetime cannot be converted to datetime64 unless utc=True
我觉得我在圈子里走来走去。我需要将列转换为datetime以执行操作,为了做到这一点,我需要让它们具有相同的时区,但我不能拥有相同的时区,除非它是一个datetime对象,所以我怎样才能最好地解决这个问题。我确实参考过以前的帖子,但它们似乎尽可能容易地转换为日期时间:
Convert datetime columns to a different timezone pandas Convert pandas timezone-aware DateTimeIndex to naive timestamp, but in certain timezone
你可以检查一下:
df = pd.DataFrame({
'time': [
'2017-11-02 19:49:28-08:00',
'2017-11-27 07:32:22-07:00',
'2017-12-27 17:01:15-07:00'
]
})
df['time'] = pd.to_datetime(df['time'])
df['time'].apply(lambda x: pd.to_datetime(x).tz_localize('US/Eastern'))
0 2017-11-03 03:49:28-04:00
1 2017-11-27 14:32:22-05:00
2 2017-12-28 00:01:15-05:00
Name: time, dtype: datetime64[ns, US/Eastern]