我有两个数据帧。其中一个df1
有20365行。另一个(df2
(25。
df1
看起来像这样:
Code DateFin ClimReg Prec Temp
A1 14-05-18 15A 0 15.2
A1 17-07-18 16A 0.01 28.2
B2 02-02-19 17B 2.5 -2.3
B2 30-11-18 18B 3.5 3.9
C3 14-07-18 13C 0.02 32.0
C3 15-07-18 13Z 6.3 3.9
D4 01-01-19 12I 0 -2.0
E5 01-03-18 12L 2.1 5.6
我只需要在df1中保留df2
:中所示范围内的行
Code HuntSeas HunStart HunEnd
A1 01-07 to 31-12 01-07-18 31-12-18
B2 15-06 to 31-01 15-06-18 31-01-19
C3 15-07 to 15-02 15-07-18 15-02-19
D4 01-07 to 28-02 01-07-18 28-02-19
E5 01-06 to 01-03 01-06-18 01-03-19..
这就是我所追求的,输出或df3
看起来像这样:
KanJ DateFin ClimReg Prec Temp HuntSeas
A1 17-07-18 16A 0.01 28.2 01-07 to 31-12
B2 30-11-18 18B 3.5 3.9 15-06 to 31-01
C3 15-07-18 13Z 6.3 3.9 15-07 to 15-02
D4 01-01-19 12I 0 -2.0 01-07 to 28-02
输出(df3
(的行数应等于或小于输入(df1
(注意:我的日期字段是键入日期
我已经尝试了几种方法
这是另一个问题的答案:选择两个日期之间的Pandas数据帧行然而,结果不是我所期望的。它给我的行比输入数据帧(
df1
(中的行多得多由于我有很多年的工作要做(不仅是2018年(,我最初的尝试是直接使用
df1
,从日期字段['DateFin']
中选择考虑MONTH
和YEAR
的行。然而,我没有找到一种方法来做到这一点。是否可以用日期类型字段的月份和日期来遍历年份?。
我将感谢任何能让我回答这个问题的提示。谢谢
尝试将merge
与query
:一起使用
df1.merge(df2, on = 'Code').query('DateFin >= HunStart and DateFin <= HunEnd')