问题描述
更新:问题是脏数据而不是数据类型问题。 如果您的数据是干净的,上述选项应该有效。 就我而言,我有大约 10 条记录,其中语言代码已转移到时间戳字段中:(
原始帖子:我正在尝试使用如下所示的 Twitter 时间戳:
df.created_at.head()
0 2015-10-23T07:57:45.000Z
1 2015-10-23T07:56:04.000Z
2 2015-10-23T07:48:26.000Z
3 2015-10-23T07:48:07.000Z
4 2015-10-23T07:44:09.000Z
Name: created_at, dtype: object
我正在尝试将“created_at”转换为日期时间数据类型。 我尝试了几种方法来做到这一点,但它们都给了我错误。
如果我尝试更改数据类型,则会收到此错误:
df.created_at.astype('datetime64[ns]')
ValueError: Error parsing datetime string "en" at position 0
如果我使用下面@Alexander 建议的调整版本,我会收到此错误:
s = pd.Series(df.created_at)
datetime_idx = pd.DatetimeIndex(pd.to_datetime(s))
ValueError: Unable to convert 0 2015-10-23T07:57:45.000Z...
这种方法给了我以下错误:
pd.to_datetime(df.created_at, format="%Y-%m-%dT%H:%M:%S.000Z")
ValueError: time data u'en' does not match format '%Y-%m-%dT%H:%M:%S.000Z' (match)
1楼
这是你要找的吗?
我只是在使用to_datetime
转换为日期DatetimeIndex
的系列上使用了DatetimeIndex
。
s = pd.Series(['2015-10-23T07:57:45.000Z', '2015-10-23T07:56:04.000Z', '2015-10-23T07:48:26.000Z', '2015-10-23T07:48:07.000Z', '2015-10-23T07:44:09.000Z'], name='created_at')
datetime_idx = pd.DatetimeIndex(pd.to_datetime(s))
>>> datetime_idx
DatetimeIndex(['2015-10-23 07:57:45', '2015-10-23 07:56:04', '2015-10-23 07:48:26', '2015-10-23 07:48:07', '2015-10-23 07:44:09'], dtype='datetime64[ns]', freq=None, tz=None)