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

如何从嵌套列表生成以股票编号为列、日期为行的DataFrame

通用实现方案:将嵌套列表转为指定结构的DataFrame

刚好做过类似的需求,用Pandas的透视表功能就能完美解决这个通用转换问题,完全不需要手动指定股票编号或者日期,自动适配任意规模的嵌套列表。

核心思路

先把嵌套列表转换成基础的三列DataFrame,再通过**透视(pivot)**操作重塑成你需要的“日期为行、股票编号为列”的结构,缺失数据会自动填充NaN,完全符合你的要求。

完整代码示例

import pandas as pd

# 你的原始嵌套列表(这里用你给出的示例,任意规模都适用)
A = [[120, 'Date1', 1.03], [120, 'Date2', 1.04], [120, 'Date3', 1.02], 
     [240, 'Date1', 1.06], [240,'Date2', 0.98], [240, 'Date3', 1.04], 
     [381, 'Date2', 1.03], [381, 'Date3', 0.85]]

# 1. 将嵌套列表转为基础DataFrame,定义临时列名
raw_df = pd.DataFrame(A, columns=['股票编号', '日期', '数值'])

# 2. 执行透视操作,自动生成目标结构
target_df = raw_df.pivot(index='日期', columns='股票编号', values='数值')

# 查看结果
print(target_df)

运行后输出的结果完全匹配你想要的结构:

股票编号   120   240   381
日期                     
Date1   1.03  1.06   NaN
Date2   1.04  0.98  1.03
Date3   1.02  1.04  0.85

处理特殊情况:重复数据

如果你的嵌套列表中存在同一股票+同一日期对应多个数值的情况,pivot会抛出错误。这时候可以用pivot_table替代,通过aggfunc参数指定重复值的处理逻辑(比如取均值、第一个值、最大值等):

# 处理重复数据,这里以取均值为例,可替换为'first'/'max'/'min'等
target_df = raw_df.pivot_table(
    index='日期', 
    columns='股票编号', 
    values='数值', 
    aggfunc='mean'  # 自定义重复值处理规则
)

为什么这是通用方案?

  • 不管嵌套列表里有多少个股票编号、多少个日期,代码都会自动识别所有唯一值作为列和行
  • 缺失的(股票+日期)组合会自动填充NaN,不需要手动处理
  • 完全不需要硬编码任何股票编号或日期,适配任意规模的输入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 19:37:41