我将其从Postgres表导出为制表符分隔的CSV,如下所示:
copy (select * from mytable) to 'labels.csv' csv DELIMITER E't' header
哪个是(文件头)
user_id session_id start_time mode
2 715 2016-04-01 01:07:49+01 car
2 716 2016-04-01 03:09:53+01 car
2 1082 2016-04-02 13:05:16+01 car
2 1090 2016-04-02 15:16:32+01 car
我把这条信息读到Pandas身上,想删除时区信息,就这样:
df = pd.read_csv('labels.csv', sep='t',parse_dates=['start_time'])
df['start_time'] = df['start_time'].dt.tz_localize(None)
但给出了错误:
AttributeError: Can only use .dt accessor with datetimelike values
df.head()
提供:
user_id session_id start_time mode
0 2 715 2016-04-01 01:07:49+01:00 car
1 2 716 2016-04-01 03:09:53+01:00 car
2 2 1082 2016-04-02 13:05:16+01:00 car
3 2 1090 2016-04-02 15:16:32+01:00 car
4 2 1601 2016-04-04 13:56:13+01:00 foot
然而,
df.info()
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 user_id 5374 non-null int64
1 session_id 5374 non-null int64
2 start_time 5374 non-null object
3 transportation_mode 5374 non-null object
dtypes: int64(3), object(2)
1条答案
按热度按时间i1icjdpr1#
请参阅
pd.read_csv
的文档:parse_dates
:bool or list of int or name or list of list或dict,默认为FALSE..。
如果列或索引不能表示为日期时间数组,例如由于无法解析的值或时区的混合,则该列或索引将原封不动地作为对象数据类型返回。对于非标准日期时间解析,请在
pd.read_csv
之后使用pd.to_datetime
。要分析具有多个时区的索引或列,请将date_parser
指定为部分应用的pd.to_datetime
和utc=True
。有关详细信息,请参阅解析具有混合时区的CSV。您的数据中可能有无法解析的日期。尝试在使用
pandas.to_datetime
读取后强制使用DATETIME,以导致错误的值,因为这将在默认情况下引发错误的值:一旦确定了问题,就可以在代码中处理该值了。类似于: