嵌套字典生成的DataFrame导出Excel仅显示部分列是什么原因
问题原因
- 生成单条数据的DataFrame时使用
orient='index'参数,会把字典的键转为行索引而非列名,每个单条字典对应的DataFrame仅有1个数值列 - 拼接时通过
keys参数生成的user_id行索引、字典键对应的行索引,在导出时被index=False参数全部丢弃,仅剩余原始的数值列被写入Excel - 额外设置的
header=False会同时丢弃列名信息,也会提升内容识别的难度
修复后代码
import pandas as pd user_ids = [] frames = [] for user_id, d in res_duplicate.items(): for item in d: # 单条字典转1行DataFrame,字典键自动映射为列名 temp_df = pd.DataFrame([item]) # 把user_id作为普通列存入,避免依赖行索引存储 temp_df['user_id'] = user_id frames.append(temp_df) df = pd.concat(frames, ignore_index=True) print(df) # 无需保留自动生成的行索引,index=False可保留,不需要表头可自行加header=False df.to_excel('C:/Users/user/Desktop/dict1.xlsx', index=False)
方案说明
pd.DataFrame([item])的转换方式符合表格存储的行逻辑,不需要额外处理索引转列的操作- 所有业务字段都以普通列的形式存储,导出时不会被
index=False过滤 concat时设置ignore_index=True重置全局行索引,避免出现重复索引的异常问题
内容的提问来源于stack exchange,提问作者ncica
相关产品推荐
相关产品推荐

