如何基于Pandas DataFrame匹配值为chromo数组赋值?
问题需求
现有Pandas DataFrame(data)与二维数组chromo,其中chromo[0]的元素对应DataFrame中Truck列的数值,chromo[1]初始全为0。需根据chromo[0]中的数值,在DataFrame中匹配对应的Door列数值,赋值给chromo[1]的对应位置。
输入示例
import pandas as pd data = pd.DataFrame({ 'Truck': [2,4,3,1,6,5], 'Door': [1,6,5,2,3,4], 'Status': [1,1,0,1,1,0] }) chromo = [ [3,6,1,2,5,4], [0,0,0,0,0,0]] # chromo[0] 对应 Truck 列数值 # chromo[1] 需填充对应 Door 列数值
解决方案
方法1:字典映射(高效简洁)
先构建Truck与Door的一一映射字典,再通过列表推导式批量赋值:
# 构建映射字典 truck_door_map = dict(zip(data['Truck'], data['Door'])) # 为chromo[1]赋值 chromo[1] = [truck_door_map[truck_id] for truck_id in chromo[0]]
方法2:Pandas Series映射
借助Pandas的map方法实现批量匹配:
truck_door_map = dict(zip(data['Truck'], data['Door'])) chromo[1] = pd.Series(chromo[0]).map(truck_door_map).tolist()
输出示例
执行代码后,chromo的最终结果:
chromo = [ [3,6,1,2,5,4], [5,3,2,1,4,6]]
内容的提问来源于stack exchange,提问作者Koala
相关产品推荐
相关产品推荐

