使用 Pandas 读取 csv 时如何指定时区信息
How to specify time zone information when reading a csv with Pandas
我有一个 csv 文件,其中包含以 CAT(中非时间)给出的时间戳。当我使用 pandas 数据框将其读入时:
df = pd.read_csv(path, parse_dates=["timestamp"], dayfirst=True)
我收到一个错误:
C:\Users..\lib\site-packages\dateutil\parser_parser.py:1218: UnknownTimezoneWarning: tzname CAT identified but not understood. Pass tzinfos
argument in order to correctly return a timezone-aware datetime. In a future version, this will raise an exception.
category=UnknownTimezoneWarning)
这似乎表明我需要传递一个参数 tzinfos,但据我所知,它没有在 Pandas 文档中列为 read_csv 的选项。我尝试了两个:
df = pd.read_csv(path, parse_dates=["timestamp"], dayfirst=True, tzinfos={"CAT": "Etc/GMT+2"})
df = pd.read_csv(path, parse_dates=["timestamp"], dayfirst=True, tzinfos= "Etc/GMT+2")
但我一直收到错误消息:
TypeError: read_csv() got an unexpected keyword argument 'tzinfos'
现在它只是一个警告,它仍然将其作为无时区数据点读入,我可以通过以下方式添加正确的时区信息:df.timestamp.dt.tz_localize("Etc/GMT+2")
,但是警告说“在未来的版本,这会引发异常”让我觉得我的代码将来会崩溃,所以我宁愿现在就修复它。
我尝试在谷歌上搜索解决方案,但所有结果似乎都与一般日期时间转换有关,而不是读取 csv(我无法弄清楚结果如何转换)。
阅读文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html
pandas1.3 pd.read_csv().
中没有tzinfos参数
tzinfos
是 dateutil's parser, which is used by pandas internally to parse the date/time strings. It cannot be supplied to pd.read_csv (or pd.to_datetime) 的直接参数,afaik。
相反,您可以在不解析日期的情况下读取 csv,导入解析器,并将其与 kwarg 一起应用,例如:
import pandas as pd
from dateutil import parser, tz
s = pd.Series(["01-Apr-17 12:00:00 AM CAT"])
# use tzfile Africa/Maputo for CAT:
s.apply(parser.parse, tzinfos={"CAT": tz.gettz("Africa/Maputo")})
0 2017-04-01 00:00:00+02:00
dtype: datetime64[ns, tzfile('/usr/share/zoneinfo/Africa/Maputo')]
我有一个 csv 文件,其中包含以 CAT(中非时间)给出的时间戳。当我使用 pandas 数据框将其读入时:
df = pd.read_csv(path, parse_dates=["timestamp"], dayfirst=True)
我收到一个错误:
C:\Users..\lib\site-packages\dateutil\parser_parser.py:1218: UnknownTimezoneWarning: tzname CAT identified but not understood. Pass
tzinfos
argument in order to correctly return a timezone-aware datetime. In a future version, this will raise an exception. category=UnknownTimezoneWarning)
这似乎表明我需要传递一个参数 tzinfos,但据我所知,它没有在 Pandas 文档中列为 read_csv 的选项。我尝试了两个:
df = pd.read_csv(path, parse_dates=["timestamp"], dayfirst=True, tzinfos={"CAT": "Etc/GMT+2"})
df = pd.read_csv(path, parse_dates=["timestamp"], dayfirst=True, tzinfos= "Etc/GMT+2")
但我一直收到错误消息:
TypeError: read_csv() got an unexpected keyword argument 'tzinfos'
现在它只是一个警告,它仍然将其作为无时区数据点读入,我可以通过以下方式添加正确的时区信息:df.timestamp.dt.tz_localize("Etc/GMT+2")
,但是警告说“在未来的版本,这会引发异常”让我觉得我的代码将来会崩溃,所以我宁愿现在就修复它。
我尝试在谷歌上搜索解决方案,但所有结果似乎都与一般日期时间转换有关,而不是读取 csv(我无法弄清楚结果如何转换)。
阅读文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html
pandas1.3 pd.read_csv().
中没有tzinfos参数tzinfos
是 dateutil's parser, which is used by pandas internally to parse the date/time strings. It cannot be supplied to pd.read_csv (or pd.to_datetime) 的直接参数,afaik。
相反,您可以在不解析日期的情况下读取 csv,导入解析器,并将其与 kwarg 一起应用,例如:
import pandas as pd
from dateutil import parser, tz
s = pd.Series(["01-Apr-17 12:00:00 AM CAT"])
# use tzfile Africa/Maputo for CAT:
s.apply(parser.parse, tzinfos={"CAT": tz.gettz("Africa/Maputo")})
0 2017-04-01 00:00:00+02:00
dtype: datetime64[ns, tzfile('/usr/share/zoneinfo/Africa/Maputo')]