移除Pandas DataFrame中timestamp列时区信息报错解决
解决移除Pandas datetime列时区信息的报错问题
先看你的数据和报错场景:
加载数据的代码:
df = pd.read_csv('test.csv', parse_dates=['timestamp']) df
输出结果:
user timestamp speed 0 2 2016-04-01 01:06:26+01:00 9.76 1 2 2016-04-01 01:06:26+01:00 5.27 2 2 2016-04-01 01:06:26+01:00 8.12 3 2 2016-04-01 01:07:53+01:00 8.81
你执行df['timestamp'].tz_convert(None)时触发错误:
TypeError: index is not a valid DatetimeIndex or PeriodIndex
错误原因
tz_convert是DatetimeIndex专属方法,直接对Series调用会报错,必须通过.dt访问器来调用datetime类型Series的专属方法。
正确解决方法
要移除timestamp列的时区信息,有两种实用方式:
- 使用
dt.tz_localize(None)(推荐,明确移除时区标记)
df['timestamp'] = df['timestamp'].dt.tz_localize(None)
- 使用
dt.tz_convert(None)(同样有效,本质是转换为无时区的naive datetime)
df['timestamp'] = df['timestamp'].dt.tz_convert(None)
执行后,timestamp列会变为不带时区的datetime格式,例如2016-04-01 01:06:26。
内容的提问来源于stack exchange,提问作者Amina Umar
相关产品推荐
相关产品推荐

