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

如何在Python中将特定结构的嵌套列表转换为指定格式DataFrame

解决方法:将嵌套列表转换为指定格式的DataFrame

作为Python新手,别担心,我会一步步带你实现这个需求。首先我们需要用到pandas库(处理表格数据的神器)和numpy库(用来生成空值),如果还没安装的话,先在命令行里运行:

pip install pandas numpy

接下来看具体代码和解释:

步骤1:整理原始数据

你提供的原始列表里有个多余的空元素,我先帮你修正了,确保数据结构是每5个元素为一组(标识、国家、日期列表、数值1列表、数值2列表):

import pandas as pd
import numpy as np

# 修正后的原始数据(移除了多余的空元素)
raw_data = [
    ['A'], ['America'], 
    ['2017-39', '2017-40', '2017-41', '2017-42', '2017-43'], 
    [10.0, 6.0, 6.0, 6.0, 1.0], 
    [5.0,7.0,8.0,9.0,1.0],
    ['B'], ['Britan'], 
    ['2017-38', '2017-39', '2017-40', '2017-41', '2017-42', '2017-43', '2017-44'], 
    [41.0, 27.0, 38.0, 36.0, 33.0, 41.0, 8.0], 
    [40.0, 38.0, 28.0, 27.0, 23.0, 65.0, 4.0]
]

步骤2:分组处理数据

我们把原始数据按每5个元素分成一组,这样每组对应一个国家的完整数据:

# 将原始数据拆分为多个组,每组包含一个国家的所有信息
groups = [raw_data[i:i+5] for i in range(0, len(raw_data), 5)]

步骤3:生成每组的DataFrame并合并

循环处理每个组,把日期、数值和固定的标识/国家对应起来,再加上你需要的空列(显示为na),最后合并所有组的结果:

# 用来存储每个组的DataFrame
dfs = []

for group in groups:
    # 提取当前组的各项数据
    label = group[0][0]       # 比如'A'或'B'
    country = group[1][0]     # 比如'America'或'Britan'
    dates = group[2]          # 日期列表
    vals1 = group[3]          # 第一组数值
    vals2 = group[4]          # 第二组数值
    
    # 创建当前组的临时DataFrame
    temp_df = pd.DataFrame({
        'Label': [label]*len(dates),  # 让每个日期行都带上标识
        'Country': [country]*len(dates),  # 让每个日期行都带上国家
        'Date': dates,
        'Value1': vals1,
        'Value2': vals2,
        'Col5': np.nan,  # 对应示例中的第一个空值(na)
        'Col6': np.nan   # 对应示例中的第二个空值(na)
    })
    
    dfs.append(temp_df)

# 合并所有组的DataFrame,得到最终结果
final_df = pd.concat(dfs, ignore_index=True)

步骤4:输出你想要的格式

运行下面的代码,就能得到和你示例一致的输出(空值显示为na,去掉索引):

# 打印结果,设置空值显示为'na',不显示索引
print(final_df.to_string(index=False, na_rep='na'))

运行后输出的结果就是:

Label Country     Date  Value1  Value2 Col5 Col6
    A  America 2017-39    10.0     5.0   na   na
    A  America 2017-40     6.0     7.0   na   na
    A  America 2017-41     6.0     8.0   na   na
    A  America 2017-42     6.0     9.0   na   na
    A  America 2017-43     1.0     1.0   na   na
    B   Britan 2017-38    41.0    40.0   na   na
    B   Britan 2017-39    27.0    38.0   na   na
    B   Britan 2017-40    38.0    28.0   na   na
    B   Britan 2017-41    36.0    27.0   na   na
    B   Britan 2017-42    33.0    23.0   na   na
    B   Britan 2017-43    41.0    65.0   na   na
    B   Britan 2017-44     8.0     4.0   na   na

(注:你示例中A组最后一行的Value2写的是10.0,应该是笔误,原始数据里是1.0,所以代码生成的是1.0哦)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:17:40