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

如何将含类对象的嵌套列表正确转换为可写入Excel的格式

含类对象的列表转Excel/CSV格式问题解决

原代码问题分析

  1. 生成器未被解析:使用(k for k in i[2])生成器表达式,pandas无法将其解析为实际数据,会输出生成器对象的内存地址。
  2. 语法与类型错误:pd.ExcelWriter多写了一个右括号;toExcel是普通列表,没有to_excel方法,必须转为pandas的DataFrame才能写入Excel。
  3. 数据结构不符合需求:原代码未按目标表格样式展开或合并子列表数据。

修正方案(两种场景)

场景1:子列表元素展开为多行(匹配常规表格样式)

将每个子列表的元素单独占一行,生成完整的结构化数据:

import pandas as pd

class Direction:
    def __init__(self, _from, _to):
        self._from = _from
        self._to = _to

# 模拟业务逻辑生成的结果列表
arr = [(Direction(_from="A", _to="B"), 2 , ['1','2']),
       (Direction(_from="C", _to="D"), 8 , ['1','2', '3', '4','5'])]

# 展开子列表,生成每行对应一个子项的结构化数据
data_rows = []
for item in arr:
    dir_instance, count, sub_items = item
    # 遍历子列表,每个元素生成一行
    for sub_item in sub_items:
        data_rows.append([
            dir_instance._from,
            dir_instance._to,
            count,
            sub_item
        ])

# 转为DataFrame并指定列名
df = pd.DataFrame(data_rows, columns=["From", "To", "Count", "SubItem"])

# 写入Excel(自动处理保存)
with pd.ExcelWriter("mypath.xlsx", engine="xlsxwriter") as writer:
    df.to_excel(writer, sheet_name="my sheet", index=False)

场景2:子列表合并为单个单元格(用分隔符连接)

如果需要将子列表元素合并到同一单元格,用逗号或其他分隔符拼接:

import pandas as pd

class Direction:
    def __init__(self, _from, _to):
        self._from = _from
        self._to = _to

arr = [(Direction(_from="A", _to="B"), 2 , ['1','2']),
       (Direction(_from="C", _to="D"), 8 , ['1','2', '3', '4','5'])]

# 合并子列表为字符串
data_rows = []
for item in arr:
    dir_instance, count, sub_items = item
    data_rows.append([
        dir_instance._from,
        dir_instance._to,
        count,
        ",".join(sub_items)  # 用逗号拼接子列表元素
    ])

df = pd.DataFrame(data_rows, columns=["From", "To", "Count", "SubItems"])

with pd.ExcelWriter("mypath.xlsx", engine="xlsxwriter") as writer:
    df.to_excel(writer, sheet_name="my sheet", index=False)

关键说明

  • 必须将原始列表转为pandas的DataFrame类型,才能调用to_excel/to_csv方法。
  • 使用with语句管理ExcelWriter,无需手动调用save(),避免资源泄漏。
  • 根据目标表格样式选择展开或合并子列表的处理方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:54:28