python pandas-从日期类型中选择月份和日期,然后在新字段中插入信息



我有两个数据帧。其中一个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(注意:我的日期字段是键入日期

我已经尝试了几种方法

  1. 这是另一个问题的答案:选择两个日期之间的Pandas数据帧行然而,结果不是我所期望的。它给我的行比输入数据帧(df1(中的行多得多

  2. 由于我有很多年的工作要做(不仅是2018年(,我最初的尝试是直接使用df1,从日期字段['DateFin']中选择考虑MONTHYEAR的行。然而,我没有找到一种方法来做到这一点。是否可以用日期类型字段的月份和日期来遍历年份?。

我将感谢任何能让我回答这个问题的提示。谢谢

尝试将mergequery:一起使用

df1.merge(df2, on = 'Code').query('DateFin >= HunStart and DateFin <= HunEnd')

最新更新