pandas读取Excel如何动态转换为按行存储的Python字典列表
pandas读取Excel转按行字典列表的动态实现方案
直接使用pandas内置的to_dict()参数即可实现需求,无需硬编码列名、手动循环拼接。
核心实现
DataFrame.to_dict()方法支持通过orient参数控制输出结构,传入orient='records'即可直接得到「每行对应一个字典、列名为键、单元格值为值」的列表结构,自动适配所有列,列动态增减时不需要修改代码。
优化后的代码如下:
import pandas as pd def read_excel(self, sheet_name): # 读取Excel工作表,可通过na_values参数指定需要识别为空值的内容 df = pd.read_excel( io=self.excel_file, sheet_name=sheet_name, na_values=['-'] # 可选,将Excel中填写的'-'统一识别为NaN,和示例预期输出匹配 ) # 直接转换为目标结构 objects = df.to_dict(orient='records') print(objects) return objects
参数说明
- 未指定
orient参数时,to_dict()默认使用orient='dict',输出结构为「列名作为一级键、行索引作为二级键」的嵌套字典,也就是最初调用得到的结果。 - 指定
orient='records'时,返回值为列表类型,列表长度和DataFrame行数一致,每个元素为对应行的键值对字典,自动读取所有列名作为键,无需手动枚举列。
执行上述代码后,输出结构和预期完全一致:
[ { 'type': 'area', 'name': 'area1', 'latitude': 50.33, 'longitude': 4.23 }, { 'type': 'building', 'name': 'building1', 'latitude': nan, 'longitude': nan } ]
内容的提问来源于stack exchange,提问作者wiwa1978
相关产品推荐
相关产品推荐

