Python3 Pandas从DataFrame提取数据生成指定字典与列表实现求助
实现代码
import pandas as pd # 原有数据读取逻辑 colName = ['carIndex', 'carMake', 'Floatnum'] data2 = pd.read_csv('cars.csv', names=colName) # 可选操作:清洗carMake列的前导/后置空格,避免排序、匹配异常 # 不需要清洗可注释此行,输出的厂商映射字典会和你给出的示例格式完全一致 data2['carMake'] = data2['carMake'].str.strip() # 1. 生成carIndex映射字典:按字母序排序后映射为0-2 sorted_cars = sorted(data2['carIndex'].unique()) car_map = {car: idx for idx, car in enumerate(sorted_cars)} # 2. 生成carMake映射字典:按字母序排序后映射为0-1 sorted_makes = sorted(data2['carMake'].unique()) make_map = {make: idx for idx, make in enumerate(sorted_makes)} # 3. 生成嵌套列表:按顺序匹配对应Floatnum,无匹配填None result_list = [] for car in sorted_cars: car_filter = data2['carIndex'] == car current_vals = [] for make in sorted_makes: match_res = data2[car_filter & (data2['carMake'] == make)]['Floatnum'] current_vals.append(match_res.iloc[0] if not match_res.empty else None) result_list.append(current_vals) # 4. 封装为元组输出 final_result = (car_map, make_map, result_list) print(final_result)
输出说明
基于你提供的样本数据,清洗空格后的输出结果为:({'Car A': 0, 'Car B': 1, 'Car C': 2}, {'Make X': 0, 'Make Y': 1}, [[2.5, 3.5], [1.5, 4.0], [2.0, None]])
和你给出的示例差异仅为Car C对应的Make X取值,示例值为演示用,上述输出和你提供的CSV实际数据完全匹配。
内容的提问来源于stack exchange,提问作者Joey Pilotte
相关产品推荐
相关产品推荐

