【问题标题】:Splitting timestamp column into separate date and time columns using pandas使用 pandas 将时间戳列拆分为单独的日期和时间列
【发布时间】:2021-12-10 08:11:33
【问题描述】:

我有一个带有超过 200 万个时间戳(如下)的 pandas 数据框,我想用它来创建以下散点图:

06/22/2006 09:54:11 PM

我很难将此时间戳分成两列:datetime

以下是数据框的内容示例。

{'STARFIRE_INCIDENT_ID': {0: 500127850130001.0, 1: 500133070120471.0, 2: 500103630140001.0, 3: 500175150150001.0, 4: 500171620150003.0}, 'INCIDENT_DATETIME': {0: '01/01/2005 12:00:01 AM', 1: '01/01/2005 12:00:03 AM', 2: '01/01/2005 12:01:02 AM', 3: '01/01/2005 12:01:42 AM', 4: '01/01/2005 12:01:45 AM'}, 'ALARM_BOX_BOROUGH': {0: 'RICHMOND / STATEN ISLAND', 1: 'BRONX', 2: 'BROOKLYN', 3: 'QUEENS', 4: 'QUEENS'}}

我想要做的是将INCIDENT_DATETIME 拆分为INCIDENT_DATEINCIDENT_TIME

我尝试了df['time'] = df['INCIDENT_DATETIME'].dt.time,但出现以下错误。

AttributeError: Can only use .dt accessor with datetimelike values

【问题讨论】:

  • 您需要:"df['INCIDENT_DATETIME'] = pd.to_datetime(df['INCIDENT_DATETIME'])" 将其从 str 转换为时间戳
  • 我认为df['INCIDENT_DATETIME'] = df['INCIDENT_DATETIME'].astype('datetime64[ns]') 可能会快一些,考虑到几百万个时间戳。
  • 到目前为止,它们都花费了太长时间。一旦我有时间,我会再试一次
  • 您需要成为实际的 datetime dtype 吗?您可以使用 split(' ') 并创建两列。它们都是字符串,但没有转换然后拆分。

标签: python pandas


【解决方案1】:

您需要先将INCIDENT_DATETIME 列转换为日期时间列,然后才能访问各个日期时间组件:

df['INCIDENT_DATETIME'] = df['INCIDENT_DATETIME'].astype('datetime64[ns]')
df['INCIDENT_DATE'] = df['INCIDENT_DATETIME'].dt.date
df['INCIDENT_TIME'] = df['INCIDENT_DATETIME'].dt.time

【讨论】:

  • 所以我实现了这个并打印了INCIDENT_TIME 问题是它都是按升序排列的。但数据集不是按升序排列的。 0 00:00:01 1 00:00:03 2 00:01:02 3 00:01:42 4 00:01:45 ... 8538432 23:52:00 8538433 23:52:00 8538434 23:56:00 8538435 23:58:00 8538436 23:59:00 Name: INCIDENT_TIME, Length: 8538437, dtype: object
猜你喜欢
  • 2016-06-06
  • 2016-12-07
  • 2021-07-27
  • 2018-08-28
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多