将UTC时间戳转换为熊猫中的本地时区问题

时间:2019-04-04 14:52:57

标签: python pandas

我正在尝试将Unix UTC时间戳转换为Pandas中的本地日期格式。我一直在寻找一些解决方案,但我不太了解如何正确执行此操作。

我有一个带有多个UTC时间戳列的数据框,所有这些列都需要转换为本地时区。比方说欧盟/柏林。

我首先将所有timestamp列转换为有效的datetime列,并进行以下调整:

df['date'] = pd.to_datetime(df['date'], unit='s') 这有效,并给我以下结果,例如 2019-01-18 15:58:25 如果我知道尝试为此日期时间调整时区,我已经尝试过两者:

df['date'].tz_localize('UTC').tz_convert('Europe/Berlin')df['date'].tz_convert('Europe/Berlin')

在两种情况下,错误均为:TypeError: index is not a valid DatetimeIndex or PeriodIndex,我不明白为什么。

问题必须是DateTime列不在索引上。但是,即使我使用df.set_index('date')并尝试了上述选项,也无法正常工作,并且出现相同的错误。

此外,如果可行,则似乎该方法仅允许对索引的DateTime进行时区调整。然后我该如何调整其他需要调整的列?

希望找到有关如何一劳永逸地解决这些问题的信息!谢谢

1 个答案:

答案 0 :(得分:1)

您首先应通过将.dt.添加到非索引中来指定它为日期时间

df['date'] = df['date'].dt.tz_localize('UTC').dt.tz_convert('Europe/Berlin')

如果该列不是索引列,则应使用它。