如何在熊猫数据框中设置时间戳的偏移量?

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

这里的其他人比我更多地使用时间序列,所以这可能不是最佳做法。

【讨论】:

谢谢丹,工作就像一个魅力,足以满足我正在做的事情。

以上是关于如何在熊猫数据框中设置时间戳的偏移量?的主要内容,如果未能解决你的问题,请参考以下文章

使用'gdb'在函数内的特定偏移量中设置断点

KSQL / KStream - 根据生成时间获取偏移量

未定义的偏移量试图从数据库中回显数据[重复]

有没有办法用内容偏移量初始化 UICollectionView?

熊猫日期时间和日期时间日期时间之间的区别

熊猫滚动窗口和日期时间索引:“偏移”是啥意思?