假设我有2个Pandas 数据框,第一个是一个查找表,第二个是一个数据表,它需要填充一个额外的列Category
,该列将使用2个条件从查找表中提取.区域应该匹配,距离应该是最小的.这两个数据帧都可以使用下面的代码生成.
lookup_data = {'Category' : ['A1', 'A2', 'B1', 'C1', 'D1', 'D2'],
'Region':['A', 'A', 'B', 'C', 'D', 'D'],
'Distance':[109, 200, 300, 400, 500, 600]}
lookup_data_df = pd.DataFrame(lookup_data)
actual_data = {'Region':['A', 'A', 'B', 'C', 'D', 'D', 'E'],
'Distance':[95, 199, 10, 350, 550, 560, 200]}
actual_df = pd.DataFrame(actual_data)
我想要一个不使用循环的解决方案.可以使用以下代码生成预期的输出数据帧.
expected_data = {'Region':['A', 'A', 'B', 'C', 'D', 'D', 'E'],
'Category' : ['A1', 'A2', 'B1', 'C1', 'D1', 'D2', 'A2'],
'Distance':[95, 199, 10, 350, 550, 560, 200]}
expected_data_df = pd.DataFrame(expected_data)
编辑:例如,在不可见区域的情况下,区域E
忽略该区域,只 Select 最小距离为A2
的Category
,在当前场景中.