如何解决pandas报错"If using all scalar values, you must pass an index"
报错的核心原因是你变量d中的第二个元素为字符串格式的字典,不是可解析的结构化对象,且不同条目对应的房型数量不一致,直接传入pandas构建DataFrame时无法匹配维度,就会触发标量值需指定索引的报错。
修复代码示例
import pandas as pd import ast # 示例变量d d = ['Houda Golf & Aquapark Novostar Monastir ', " {'All Inclusive soft': ('202', '175', '15%'), 'Demi Pension': ('161', '140', '15%'), 'Petit Dejeuner': ('137', '119', '15%'), 'DP plus': ('237', '119', '15%')}"] # 转换字符串字典为Python字典,strip处理多余空格 price_dict = ast.literal_eval(d[1].strip()) hotel_name = d[0].strip() # 规整为统一的结构化列表 processed_data = [] for room_type, (price1, price2, discount) in price_dict.items(): processed_data.append({ "酒店名称": hotel_name, "房型": room_type, "价格1": price1, "价格2": price2, "折扣": discount }) # 构建DataFrame,无需额外指定索引 df = pd.DataFrame(processed_data) # 后续写入Excel的逻辑保持不变即可 # df.to_excel("你的文件路径.xlsx", index=False)
批量处理优化建议
如果需要处理多个同结构的列表数据,不要在循环中逐次生成DataFrame写入Excel,可先将所有处理后的结构化数据存入一个总列表,全部处理完成后统一生成DataFrame,既完全规避维度不匹配问题,也能大幅提升运行效率。
内容的提问来源于stack exchange,提问作者HiFAR
相关产品推荐
相关产品推荐

