如何将pandas中的datetime列转换为相同的时区

问题描述 投票:1回答:1

我有一个带有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

python pandas datetime type-conversion timezone
1个回答
1
投票

你可以检查一下:

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]
© www.soinside.com 2019 - 2024. All rights reserved.