【问题标题】:Python pandas finding data in between timePython pandas 在时间间隔内查找数据
【发布时间】:2019-03-14 18:46:48
【问题描述】:

我正在使用犯罪统计数据(在数据框中),我试图找出大多数犯罪发生在上午 12 点至上午 8 点、上午 8 点至下午 4 点和下午 4 点至下午 12 点之间的时间。我已经将该列转换为 DateTime。我使用的代码是:

#first attempt
df_15['FIRST_OCCURRENCE_DATE']=pd.date_range('01/01/2015',periods=10000,freq='H')
df_15[(df_15['FIRST_OCCURrENCE_DATE'] > '2015-1-1 00:00:00') & (df_15['FIRST_OCCURRENCE_DATE'] <= '2015-12-31 08:00:00')]

#second attempt
df_15 = df_15.set_index(df_15['FIRST_OCCURRENCE_DATE'])
df_15.loc['2015-01-01 00:00:00':'2015-12-31 00:00:00']

#third attempt
date_rng = pd.date_range(start='00:00:00', end='08:00:00',freq='H')
date_rng1 = pd.DataFrame(date_rng)
date_rng1.head(30)

#fourth attempt
df_15.FIRST_OCCURRENCE_DATE.dt.hour
ts = pd.to_datetime('12/31/2015 08:00:00')
df_15.loc[df_15.FIRST_OCCURRENCE_DATE <= ts,:].head()

我得到的结果是 08:00:00 之外的时间条目。

附言。所有数据均来自同一年

【问题讨论】:

  • 你期望输出什么?
  • 我想获得每个时间间隔内发生的犯罪总数。例如,上午 12 点(00:00:00)-上午 8 点(08:00:00)之间的 12,000 个。 10,000 从上午 8 点到下午 4 点

标签: python pandas datetime time


【解决方案1】:

看起来你可以做一些算术和计数:

(df_15['FIRST_OCCURrENCE_DATE'].dt.hour // 8).value_counts()

有很多方法可以解决这个问题,但这可能是最简单的。从每个日期中提取一天中的小时,找到它属于哪个时间段。除以 8 得到 0 (12AM-8AM)、1 (8AM-4PM) 或 2 (4PM-12AM),然后只计算这些出现次数。

【讨论】:

  • 我试过了,我得到了一个语法错误:df_15['FIRST_OCCURRENCE_DATE'].dt.hour//8).value_counts() ^ 当我删除 ) 它显示一个语法错误:value_counts跨度>
  • @S.Caruso 抱歉,这是一个复制粘贴错误。你能再试一次吗
猜你喜欢
  • 1970-01-01
  • 2011-07-02
  • 2014-11-28
  • 2017-09-02
  • 2021-10-04
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
  • 2019-11-08
相关资源
最近更新 更多