我的数据框看起来像这样。笔记本是here
C/A UNIT SCP DATEn TIMEn DESCn ENTRIESn EXITSn
0 A002 R051 02-00-00 08-18-12 00:00:00 REGULAR 3759779 1297676
1 A002 R051 02-00-00 08-18-12 04:00:00 REGULAR 3759809 1297680
2 A002 R051 02-00-00 08-18-12 08:00:00 REGULAR 3759820 1297701
3 A002 R051 02-00-00 08-18-12 12:00:00 REGULAR 3759879 1297799
4 A002 R051 02-00-00 08-18-12 16:00:00 REGULAR 3760073 1297863
5 A002 R051 02-00-00 08-18-12 20:00:00 REGULAR 3760367 1297920
6 A002 R051 02-00-00 08-19-12 00:00:00 REGULAR 3760494 1297958
7 A002 R051 02-00-00 08-19-12 04:00:00 REGULAR 3760525 1297962
8 A002 R051 02-00-00 08-19-12 08:00:00 REGULAR 3760545 1297983
9 A002 R051 02-00-00 08-19-12 12:00:00 REGULAR 3760603 1298048
10 A002 R051 02-00-00 08-19-12 16:00:00 REGULAR 3760750 1298104
11 A002 R051 02-00-00 08-19-12 20:00:00 REGULAR 3760982 1298137
12 A002 R051 02-00-00 08-20-12 00:00:00 REGULAR 3761088 1298175
13 A002 R051 02-00-00 08-20-12 04:00:00 REGULAR 3761098 1298186
14 A002 R051 02-00-00 08-20-12 08:00:00 REGULAR 3761130 1298265
此代码将过滤掉7月份
july_station = df[['COUNTn']]\
[(df.DATETIMEn >= datetime.datetime.strptime('07-01-13', '%m-%d-%y')) &\
(df.DATETIMEn <= datetime.datetime.strptime('07-31-13', '%m-%d-%y'))]\
.groupby(df.UNIT)\
.sum()
以上代码仅过滤了月份
如果我必须在午夜和午夜之间过滤掉条目怎么办? 2013年7月周五凌晨4点?这是正确的做法吗?
july_station1 = df[['COUNTn']]\
[(df.DATETIMEn >= datetime.datetime.strptime('07-01-13 00:00 5', '%m-%d-%y %H:%M %A')) &\
(df.DATETIMEn <= datetime.datetime.strptime('07-31-13 04:00 5', '%m-%d-%y %H:%M %A'))]\
.groupby(df.UNIT)\
.sum()
答案 0 :(得分:1)
如果您的列是日期时间列,则可以使用column.dt.weekday
(星期一= 0,星期日= 6)和column.dt.hour
获取工作日和小时。您还可以在系列中使用between
来更优雅地进行范围比较:
df.DATEn = pd.to_datetime(df.DATEn)
df.TIMEn = pd.to_datetime(df.TIMEn)
mask = (df.DATEn == 4) & df.TIMEn.dt.hour.between(0,4)