如何比较两个数据帧并分配条件值
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
我有两个数据框。
第一个:
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