THM*_*THM 6 python timezone pytz pandas
我有一个包含两列的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
Run Code Online (Sandbox Code Playgroud)
我想要实现的是将每行的偏移量添加到时间戳:
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
Run Code Online (Sandbox Code Playgroud)
我试过替换tzinfo但未能找到合适的解决方案.我正在考虑以下内容(伪代码):
df.apply(lambda x: x['DATETIME'].replace(tzinfo=pytz.utc + x['OFFSET'])
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
谢谢,托马斯
看起来很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
Run Code Online (Sandbox Code Playgroud)
这里的其他人比我更多地使用时间序列,所以这可能不是最佳实践.
| 归档时间: |
|
| 查看次数: |
1285 次 |
| 最近记录: |