如何格式化Twitter(和其他)时间戳?

时间:2015-10-24 22:09:39

标签: python date twitter pandas

更新:问题是数据脏,而不是数据类型问题。如果您的数据干净,上述选项应该可以使用。就我而言,我有大约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 个答案:

答案 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)