gpt4 book ai didi

python - 如何在 Pandas 中使用 read_csv 读取时区感知日期时间作为时区天真的本地 DatetimeIndex?

转载 作者:太空狗 更新时间:2023-10-30 02:27:57 24 4
gpt4 key购买 nike

当我使用 pandas read_csv 读取具有时区感知日期时间的列(并将此列指定为索引)时,pandas 将其转换为 timezone naive utc DatetimeIndex。

Test.csv 中的数据:

日期时间,温度
2016-07-01T11:05:07+02:00,21.125
2016-07-01T11:05:09+02:00,21.138
2016-07-01T11:05:10+02:00,21.156
2016-07-01T11:05:11+02:00,21.179
2016-07-01T11:05:12+02:00,21.198
2016-07-01T11:05:13+02:00,21.206
2016-07-01T11:05:14+02:00,21.225
2016-07-01T11:05:15+02:00,21.233

从 csv 中读取的代码:

In [1]: import pandas as pd

In [2]: df = pd.read_csv('Test.csv', index_col=0, parse_dates=True)

这会产生一个代表时区原始 utc 时间的索引:

In [3]: df.index

Out[3]: DatetimeIndex(['2016-07-01 09:05:07', '2016-07-01 09:05:09',
'2016-07-01 09:05:10', '2016-07-01 09:05:11',
'2016-07-01 09:05:12', '2016-07-01 09:05:13',
'2016-07-01 09:05:14', '2016-07-01 09:05:15'],
dtype='datetime64[ns]', name='DateTime', freq=None)

我尝试使用 date_parser 函数:

In [4]: date_parser = lambda x: pd.to_datetime(x).tz_localize(None)

In [5]: df = pd.read_csv('Test.csv', index_col=0, parse_dates=True, date_parser=date_parser)

这给出了相同的结果。

如何让 read_csv 创建一个 timezone naive 的 DatetimeIndex 并代表本地时间而不是utc 时间

我使用的是 pandas 0.18.1。

最佳答案

根据 the docs默认的 date_parser 使用 dateutil.parser.parser。根据the docs for that function ,默认是忽略时区。因此,如果您提供 dateutil.parser.parser 作为 date_parser kwarg,则不会转换时区。

import dateutil

df = pd.read_csv('Test.csv', index_col=0, parse_dates=True, date_parser=dateutil.parser.parse)

print(df)

输出

                           Temperature
DateTime
2016-07-01 11:05:07+02:00 21.125
2016-07-01 11:05:09+02:00 21.138
2016-07-01 11:05:10+02:00 21.156
2016-07-01 11:05:11+02:00 21.179
2016-07-01 11:05:12+02:00 21.198
2016-07-01 11:05:13+02:00 21.206
2016-07-01 11:05:14+02:00 21.225
2016-07-01 11:05:15+02:00 21.233

关于python - 如何在 Pandas 中使用 read_csv 读取时区感知日期时间作为时区天真的本地 DatetimeIndex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38531317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com