Python熊猫在两次之间找到数据

时间:2018-10-09 22:52:27

标签: python pandas datetime time

我正在使用犯罪统计数据(在一个数据框中),并且试图找出大多数犯罪发生在上午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。

PS。所有数据都来自同一年

1 个答案:

答案 0 :(得分:2)

看起来您可以做一些算术运算并计数:

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

有很多方法可以解决此问题,但这可能是最简单的。从每个日期中提取一天中的小时,找到它属于哪个时隙。楼层除以8可获得0(12 AM-8AM),1(8 AM-4PM)或2(4 PM-12AM),然后对这些事件进行计数。