在Pandas中,如何根据特定的工作日和时间范围进行过滤

2024-09-19 23:28:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据框看起来像这个。那个笔记本是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月份

^{pr2}$

上面的代码只过滤月份

如果我必须过滤掉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()

Tags: 数据代码dfdatetimehereunit笔记本scp
1条回答
网友
1楼 · 发布于 2024-09-19 23:28:18

如果您的列是datetime列,则可以使用column.dt.weekday(monday=0,sunday=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)

相关问题 更多 >