如何比较两个数据帧并分配条件值

How to compare two dataframes and assign a conditional value

我有两个数据框。

第一个:

MONTH         NAME        VALUE
01/01/2021    A           10
01/01/2021    B           20
01/01/2021    C           35
01/01/2021    D           40 
01/02/2021    E           50
01/02/2021    F           60
01/02/2021    G           75
01/02/2021    H           80

第二个:

MONTH      ATTRIBUTE      FEATURE
01/01/2021   x             0
01/01/2021   y             15
01/01/2021   z             30
01/02/2021   x             50
01/02/2021   y             70
01/02/2021   z             80

我需要比较月份、值和特征。

如果属性中的特征小于月中的值,则分配属性。预期输出为:

MONTH         NAME        VALUE    ATTRIBUTE
01/01/2021    A           10          x
01/01/2021    B           20          y
01/01/2021    C           35          z
01/01/2021    D           40          z 
01/02/2021    E           50          x
01/02/2021    F           60          x
01/02/2021    G           75          y
01/02/2021    H           80          z

你需要 merge_asof:

pd.merge_asof(df1.sort_values('VALUE'), df2.sort_values('FEATURE'),
              by='MONTH', left_on='VALUE', right_on='FEATURE',
              #allow_exact_matches=False
             )

注意如果你想要一个严格的劣值,添加allow_exact_matches=False参数。 输出:

        MONTH NAME  VALUE ATTRIBUTE  FEATURE
0  01/01/2021    A     10         x        0
1  01/01/2021    B     20         y       15
2  01/01/2021    C     35         z       30
3  01/01/2021    D     40         z       30
4  01/02/2021    E     50         x       50
5  01/02/2021    F     60         x       50
6  01/02/2021    G     75         y       70
7  01/02/2021    H     80         z       80