pal*_*las 14 python datetime pandas
我正在尝试从csv创建一个数据框,它的第一列就像
"2013-08-25T00:00:00-0400";
"2013-08-25T01:00:00-0400";
"2013-08-25T02:00:00-0400";
"2013-08-25T03:00:00-0400";
"2013-08-25T04:00:00-0400";
Run Code Online (Sandbox Code Playgroud)
这是带时区的日期时间!我已经用过像
df1 = DataFrame(pd.read_csv(PeriodC, sep=';', parse_dates=[0], index_col=0))
Run Code Online (Sandbox Code Playgroud)
但结果是
2013-09-02 04:00:00
2013-09-03 04:00:00
2013-09-04 04:00:00
2013-09-05 04:00:00
2013-09-06 04:00:00
2013-09-07 04:00:00
2013-09-08 04:00:00
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释我如何从时区分离日期时间?
Vik*_*kez 16
如果时区信息可用,Pandas解析器会考虑时区信息,并给你一个天真的时间戳(天真==没有时区信息),但考虑到时区偏移.
要将时区信息保存在DataFrame中,首先应将Timestamps本地化UTC,然后将它们转换为它们的时区(在本例中为Etc/GMT+4):
>>> df = pd.read_csv(PeriodC, sep=';', parse_dates=[0], index_col=0)
>>> df.index[0]
>>> Timestamp('2013-08-25 04:00:00', tz=None)
>>> df.index = df.index.tz_localize('UTC').tz_convert('Etc/GMT+4')
>>> df.index[0]
Timestamp('2013-08-25 00:00:00-0400', tz='Etc/GMT+4')
Run Code Online (Sandbox Code Playgroud)
如果要完全丢弃时区信息,则只需指定一个date_parser将分割字符串并仅将日期时间部分传递给解析器的信息.
>>> df = pd.read_csv(file, sep=';', parse_dates=[0], index_col=[0]
date_parser=lambda x: pd.to_datetime(x.rpartition('-')[0]))
>>> df.index[0]
Timestamp('2013-08-25 00:00:00', tz=None)
Run Code Online (Sandbox Code Playgroud)