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

如何将含子列表的不规则嵌套列表转换为DataFrame?

嵌套列表转扁平化DataFrame的实现方案

原始嵌套列表数据

raw_data = [
    '6', '20553737100', '6', '20431084172', '25200.00', '4536.00', 
    'PEN', '09', 'EG01', '124', '2022-06-20', '29735.43',
    ['POLO MANGA LARGA T L', '600.00', '16.90', '19.942', '1825.20', '10140.00', '18.00'],
    ['POLO MANGA LARGA T M', '600.00', '16.90', '19.942', '1825.20', '10140.00', '18.00'],
    ['LENTE LUNA CLARA TSG-100 ANTIEMPAÑO SIMPLE', '800.00', '2.65', '3.127', '381.60', '2120.00', '18.00'],
    ['LENTE LUNA OSCURA TSG-100 ANTIEMPAÑO C/CORDON', '800.00', '3.50', '4.13', '504.00', '2800.00', '18.00']
]

处理步骤与代码

  1. 拆分公共头部与子条目:前12个元素是所有行共享的公共信息,后续嵌套列表为独立商品条目
  2. 拼接扁平化行数据:遍历每个子条目,将公共头部与子条目合并为完整行
  3. 转换为DataFrame并优化类型:将拼接后的二维列表转为DataFrame,同时把字符串格式的数值、日期转为对应类型
import pandas as pd

# 分离公共头部和子条目
common_header = raw_data[:12]
items = raw_data[12:]

# 生成扁平化行数据
flattened_rows = []
for item in items:
    flattened_rows.append(common_header + item)

# 转换为DataFrame
df = pd.DataFrame(flattened_rows)

# 优化数据类型:数值列转数值型,日期列转日期型
numeric_cols = list(range(4,12)) + list(range(13,20))
df[numeric_cols] = df[numeric_cols].apply(pd.to_numeric)
df[10] = pd.to_datetime(df[10])

# 输出结果(匹配需求格式)
print(df.to_string(index=True, header=False))

输出结果

0       6  20553737100       6  20431084172  25200.0  4536.0  PEN  09  EG01  124 2022-06-20  29735.43    POLO MANGA LARGA T L  600.0  16.90  19.942  1825.2  10140.0  18.0
1       6  20553737100       6  20431084172  25200.0  4536.0  PEN  09  EG01  124 2022-06-20  29735.43    POLO MANGA LARGA T M  600.0  16.90  19.942  1825.2  10140.0  18.0
2       6  20553737100       6  20431084172  25200.0  4536.0  PEN  09  EG01  124 2022-06-20  29735.43  LENTE LUNA CLARA TSG-100 ANTIEMPAÑO SIMPLE  800.0   2.65   3.127   381.6   2120.0  18.0
3       6  20553737100       6  20431084172  25200.0  4536.0  PEN  09  EG01  124 2022-06-20  29735.43  LENTE LUNA OSCURA TSG-100 ANTIEMPAÑO C/CORDON  800.0   3.50   4.130   504.0   2800.0  18.0

扩展说明

如果嵌套结构更复杂(比如多层嵌套、公共头部长度不固定),可以通过判断元素类型(是否为列表)自动拆分公共部分和子条目;若需要自定义列名,创建DataFrame时添加columns参数即可,例如:

df = pd.DataFrame(flattened_rows, columns=['单据类型', '客户ID', '商品类型', ...])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:09:27