更新:问题是数据脏,而不是数据类型问题。如果您的数据干净,上述选项应该可以使用。就我而言,我有大约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)
答案 0 :(得分:1)
这是你要找的吗?我刚刚在使用DatetimeIndex
转换为日期时间的系列上使用了to_datetime
。
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)