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

如何用Pandas结合xlwings将DataFrame指定字段写入Excel?

解决方案

问题核心

你当前的DataFrame仅包含一列,每行数据是嵌套的字典结构,直接通过列名索引会找不到目标字段,必须先将字典展开为多列的标准DataFrame,再提取指定字段写入Excel。

修正步骤与代码

方法1:直接处理字典列表(推荐)

如果sas.get_profile()返回的是包含多个字典的列表,直接用pd.json_normalize展开为多列DataFrame:

import xlwings as xw
import pandas as pd

# 打开目标Excel和工作表
wb = xw.Book('Easy_Algo.xlsx')
ts = wb.sheets['profile']

# 获取原始字典列表数据
pdata = sas.get_profile()

# 将字典列表展开为多列DataFrame,自动以字典键作为列名
df_expanded = pd.json_normalize(pdata)

# 提取需要的指定字段(确保字段名与字典键完全匹配,含空格、大小写)
target_fields = ['symbol', 'product', 'avg price', 'buy avg']
df_selected = df_expanded[target_fields]

# 从A1单元格开始写入,自动包含表头
ts.range('A1').value = df_selected

方法2:处理已生成的单列DataFrame

如果已经得到了仅含一列的DataFrame(比如列名为0或自定义列名),先提取列内的字典再展开:

import xlwings as xw
import pandas as pd

wb = xw.Book('Easy_Algo.xlsx')
ts = wb.sheets['profile']
pdata = sas.get_profile()

# 生成单列DataFrame
df = pd.DataFrame(pdata)

# 提取单列中的所有字典,展开为多列DataFrame
# 若列名不是0,替换为实际列名(比如df['data'])
df_expanded = pd.json_normalize(df.iloc[:, 0])

# 提取目标字段并写入Excel
target_fields = ['symbol', 'product', 'avg price', 'buy avg']
ts.range('A1').value = df_expanded[target_fields]

关键注意事项

  • 确保target_fields中的字段名与原始字典的键完全一致,包括空格、大小写,否则会触发KeyError。
  • pd.json_normalize会自动处理嵌套字典(如果有的话),是解析字典列表最便捷的工具。
  • xlwings写入DataFrame时,默认会将表头和数据一起写入,正好匹配你需要的表头对应格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:31:34