我有一个数据框 df,采用以下格式多年(每 6 小时)。
我需要过滤每年的日期,仅在 11 月 30 日至 3 月 30 日期间。
Dates Col1 Col2
11178 2018-10-27 12:00:00 -1 -3
11179 2018-10-27 18:00:00 -2 2
11180 2018-10-28 00:00:00 1 8
11181 2018-10-28 06:00:00 0.1 -0.2
11182 2018-10-28 12:00:00 0.2 -0.1
11183 2018-10-28 18:00:00 0.2 0.03
11184 2018-10-29 00:00:00 0.3 0.07
11185 2018-10-29 06:00:00 0.2 -0.2
11186 2018-10-29 12:00:00 0.05 -0.4
11187 2018-10-29 18:00:00 0.02 -0.5
11188 2018-10-30 00:00:00 0.02 -0.6
11189 2018-10-30 06:00:00 -0.05 -0.7
我可以通过以下方式删除某些日期或月份
df = df.loc[~(df['Dates'].dt.month.eq(4))]
以四月为例。我似乎无法找到一种有效的方法来为每年执行相同的日期范围,因此我最终可以通过每次将时间段后移一天来迭代地执行此操作。
日期列当前采用日期时间格式。
假设您只想选择11 月 30 日至3 月 30 日的数据:
那么你可以将你完全选择的月份和你只选择几天的月份分开:
1.您选择完全:十二月 一月和二月。
Dcember_Jan_Feb=~df['Dates'].dt.month.between(3,11)
你选11月30号,你也选3月1号到3月30号(3月有31天)
Nov_30=df['Dates'].dt.month.eq(11)&df['Dates'].dt.day.between(30,30)
March_1_to_30=df['Dates'].dt.month.eq(3)&df['Dates'].dt.day.between(1,30)
最后,应用您的过滤器:
df_filtered=df[Dcember_Jan_Feb|Nov_30|March_1_to_30]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句