如何在 Python 中从字符串转换、应用时区偏移量、幼稚并转换回字符串的 Pandas 系列索引?

How can I convert from string, apply the timezone offset, make naive and convert back to string a Pandas Series Index in Python?

提问人:xpanta 提问时间:11/15/2023 最后编辑:FObersteinerxpanta 更新时间:11/16/2023 访问量:48

问:

我有一个 Pandas 时间序列对象,其索引如下所示:

Index(['2023-05-31T00:05:00+0300', '2023-05-31T00:06:00+0300',
       ...       
       '2023-09-15T13:48:00+0300', '2023-09-15T13:49:00+0300'],
      dtype='object', length=76106)

我需要转换成这个:

Index(['2023-05-30T21:05:00', '2023-05-30T21:06:00',
       ...       
       '2023-09-15T10:48:00', '2023-09-15T10:49:00'],
      dtype='object', length=76106)

我试图做的,有效地,是将字符串转换为日期时间,减去时区偏移量,使其幼稚,然后将其转换回字符串。

我知道如何在很多(有点复杂)的步骤中做到这一点,这些步骤将涉及将系列转换为字典,一个接一个地转换(日期时间)键,使字典成为一个新系列,但是有没有办法通过几个步骤来做到这一点,可能是就地的?

任何帮助将不胜感激。

Python pandas 日期时

评论


答:

3赞 Nick 11/15/2023 #1

您可以使用 pd.to_datetime 将索引转换为日期时间,通过指定 将时区转换为 ,然后使用 strftime 格式化结果:UTCutc=True

idx = pd.Index(['2023-05-31T00:05:00+0300', '2023-05-31T00:06:00+0300','2023-09-15T13:48:00+0300', '2023-09-15T13:49:00+0300'])

idx = pd.to_datetime(idx, utc=True).strftime('%Y-%m-%dT%H:%M:%S')

输出:

Index(['2023-05-30T21:05:00', '2023-05-30T21:06:00', '2023-09-15T10:48:00',
       '2023-09-15T10:49:00'],
      dtype='object')

评论

0赞 Nick 11/16/2023
@FObersteiner好点!我已经更新了答案以反映这一点。谢谢