如何从JSON数据筛选离线端点并通过Pandas导出为xlsx文件
最优实现方案
你预想的直接把数据导入Pandas再筛选的逻辑完全可行,比手动循环拼接字典的效率高很多,同时能避免你现有代码里的几个错误:
- 字典键名大小写不一致会触发KeyError
- append时直接写字符串没有取接口返回的对应字段值
- 把DataFrame构建和文件导出写在循环内,每匹配到一个离线设备就重复覆写文件,性能损耗极大
优化后完整代码
import pandas as pd # 此处response_data为接口返回的JSON格式列表数据 # 1. 直接将完整JSON列表转为DataFrame df = pd.DataFrame(response_data) # 2. 一键筛选状态为offline的记录 df_offline = df[df['status'] == 'offline'].copy() # 3. 自定义输出列名,和你需要的导出表头对应 column_mapping = { 'name': 'Name', 'serial': 'Serial', 'mac': 'MAC', 'publicIp': 'Public IP', 'networkId': 'Network ID', 'status': 'Status', 'lastReportedAt': 'Last Reported', 'usingCellularFailover': 'Cellular', 'wan1Ip': 'WAN 1', 'wan2Ip': 'WAN 2', 'lanIp': 'LAN' } # 只保留需要的字段并重命名 df_offline = df_offline.rename(columns=column_mapping)[list(column_mapping.values())] # 4. 导出为xlsx,只有存在离线设备时才生成文件,避免无效空文件 if not df_offline.empty: df_offline.to_excel("output.xlsx", index=False)
方案优势
- 全程没有手动循环拼接字典的冗余操作,所有筛选、重命名逻辑都由Pandas内置方法实现,性能更高、代码可读性更强
- 自动适配接口返回的所有字段,不需要提前手动定义字典的每个key
- 逻辑严谨,边缘场景适配更完善
内容的提问来源于stack exchange,提问作者moehawk__
相关产品推荐
相关产品推荐

