如何在熊猫数据框中设置时间戳的偏移量?
Posted
技术标签:
【中文标题】如何在熊猫数据框中设置时间戳的偏移量?【英文标题】:How to set the offset of timestamps in a pandas dataframe? 【发布时间】:2013-06-16 09:02:41 【问题描述】:我有一个包含两列的 DataFrame。一列填充了时间戳,另一列包含同一行中时间戳相对于 UTC 的小时偏移量。
DataFrame 如下所示:
In [44]: df
Out[44]:
DATETIME OFFSET
0 2013-01-01 00:00:00+00:00 1
1 2013-01-01 01:00:00+00:00 1
2 2013-01-01 02:00:00+00:00 1
3 2013-01-01 03:00:00+00:00 1
4 2013-01-01 04:00:00+00:00 1
5 2013-01-01 05:00:00+00:00 1
6 2013-01-01 06:00:00+00:00 2
7 2013-01-01 07:00:00+00:00 2
8 2013-01-01 08:00:00+00:00 2
我想要实现的是将每行的偏移量添加到时间戳:
In [44]: df
Out[44]:
DATETIME OFFSET
0 2013-01-01 00:00:00+01:00 1
1 2013-01-01 01:00:00+01:00 1
2 2013-01-01 02:00:00+01:00 1
3 2013-01-01 03:00:00+01:00 1
4 2013-01-01 04:00:00+01:00 1
5 2013-01-01 05:00:00+01:00 1
6 2013-01-01 06:00:00+02:00 2
7 2013-01-01 07:00:00+02:00 2
8 2013-01-01 08:00:00+02:00 2
我已尝试替换 tzinfo,但未能找到合适的解决方案。我正在考虑类似以下的内容(伪代码):
df.apply(lambda x: x['DATETIME'].replace(tzinfo=pytz.utc + x['OFFSET'])
感谢任何帮助。
谢谢, 托马斯
【问题讨论】:
感觉就像你想做t1.tz_convert(9)
(但这不起作用!)
【参考方案1】:
看起来pytz.FixedOffset
适合这个目的。
In [39]: df.apply(lambda x: pd.Timestamp(x['DATETIME'], tz=pytz.FixedOffset(60*x['OFFSET'])), axis=1)
Out[39]:
0 2013-01-01 00:00:00+01:00
1 2013-01-01 01:00:00+01:00
2 2013-01-01 02:00:00+01:00
3 2013-01-01 03:00:00+01:00
4 2013-01-01 04:00:00+01:00
5 2013-01-01 05:00:00+01:00
6 2013-01-01 06:00:00+02:00
7 2013-01-01 07:00:00+02:00
8 2013-01-01 08:00:00+02:00
dtype: object
这里的其他人比我更多地使用时间序列,所以这可能不是最佳做法。
【讨论】:
谢谢丹,工作就像一个魅力,足以满足我正在做的事情。以上是关于如何在熊猫数据框中设置时间戳的偏移量?的主要内容,如果未能解决你的问题,请参考以下文章