当前位置: 代码迷 >> python >> 如何格式化 Twitter(和其他)时间戳?
  详细解决方案

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

热度:83   发布时间:2023-06-13 17:01:47.0

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

这是你要找的吗? 我只是在使用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)
  相关解决方案