You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将单键字典列表数据写入Excel同一行的对应列?

问题:多个单键值对字典转Excel时数据错位/单列多行的解决方法

我有一个由多个单键值对字典组成的data_list,用pandas写入Excel时遇到两个问题:

  • 直接转DataFrame后写入,每行仅一个列有值,其余为空(数据错位)
  • 用循环追加的方式,所有数据被写入同一列的多行中

期望效果:将所有字典的键作为Excel列名,对应值填充在同一行的对应列中。


尝试过的代码

第一段代码(数据错位)

df = pd.DataFrame(data_list)
name_exel = 'HomeOwners_results.xlsx'
df.to_excel(name_exel,index=False, header=True,startrow=0,startcol=0)

第二段代码(单列多行)

df = pd.DataFrame(columns=['Column'])
for item in data_list:
    for key, value in item.items():
        df = df.append({'Column': value}, ignore_index=True)
name_excel = 'HomeOwners_results.xlsx'
df.to_excel(name_excel, index=False, header=False)
print(df)

问题根源

你的data_list结构是多个单键值对字典(比如[{'姓名': '张三'}, {'年龄': 25}, {'职业': '程序员'}]):

  • 第一段代码中,pd.DataFrame(data_list)会把每个字典单独作为一行,导致每行仅对应一个列有值;
  • 第二段代码循环追加时,所有值都被塞进同一个列,自然变成单列多行。

正确实现代码

核心逻辑是把多个单键值对字典合并成一个完整字典,再转成DataFrame(此时会生成一行数据,键对应列名)。

方法1:字典推导式合并(简洁版)

import pandas as pd

# 替换为你的实际data_list
data_list = [{'姓名': '张三'}, {'年龄': 25}, {'职业': '程序员'}, {'城市': '北京'}]

# 合并所有单键字典为一个完整字典
merged_dict = {k: v for d in data_list for k, v in d.items()}
# 转成单行DataFrame
df = pd.DataFrame([merged_dict])

# 写入Excel
df.to_excel('HomeOwners_results.xlsx', index=False, header=True)

方法2:循环update合并(直观版,便于处理键重复场景)

import pandas as pd

data_list = [{'姓名': '张三'}, {'年龄': 25}, {'职业': '程序员'}, {'城市': '北京'}]

merged_dict = {}
for d in data_list:
    # 若存在重复键,后面的字典值会覆盖前面的
    merged_dict.update(d)

df = pd.DataFrame([merged_dict])
df.to_excel('HomeOwners_results.xlsx', index=False, header=True)

以上两种方法都会生成符合预期的Excel文件:所有字典的键作为列名,对应值填充在同一行的对应列中。

内容的提问来源于stack exchange,提问作者Georgian Costea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:48:14