我有一个主数据框df
和另一个数据框ext_map
:
df = pd.DataFrame(data={'true': [1, 2, 3], 'billed': [104, 50, 256]})
true billed
0 1 104
1 2 50
2 3 256
ext_map = pd.DataFrame(data={'label':[3.1, 2.5, 3.5], 'mix':[100, 200, 300]})
label mix
0 3.1 100
1 2.5 200
2 3.5 300
我想创建一个new_col
在df
获取label
的每个行df
,使得df.billed
<= ext_map.mix
。我该如何实现而不for
循环?mix
列始终按升序排序。(这里的所有其他值仅是示例。)
预期结果
true billed new_col
0 1 104 2.5
1 2 50 3.1
2 3 256 3.5
采用 pd.cut
lower_limit = 0
ext_map_sorted = ext_map.sort_values('mix')
df['new_col'] = pd.cut(df['billed'],
[lower_limit] + ext_map_sorted['mix'].tolist(),
labels = ext_map_sorted['label'])
print(df)
true billed new_col
0 1 104 2.5
1 2 50 3.1
2 3 256 3.5
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句