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

如何使用列表推导式从转置DataFrame列生成指定结构嵌套列表

实现方案

1. 一行列表推导式写法

直接用zip配对三类列即可实现,代码如下:

vars = [[d, g, r] for d, g, r in zip(
    sorted(c for c in test.columns if 'Date' in c),
    sorted(c for c in test.columns if 'GMV' in c),
    sorted(c for c in test.columns if 'Gross Revenue' in c)
)]

逻辑说明

  • 内层三个生成器分别筛选出Date、GMV、Revenue三类列,加sorted保证列按末尾的0-9序号升序排列,避免因DataFrame原列顺序混乱导致匹配错误
  • 用zip函数将三个筛选后的列表按位置一一配对,每次迭代直接取出同序号的三类列,无需手动遍历下标,代码更简洁
  • 对比你原来的下标遍历写法,zip会自动按最短的列表长度截断,避免下标越界报错,稳定性更好

2. 更适合pandas场景的通用处理方法

如果后续可能新增其他指标列,或者列数量较大,推荐按列名后缀自动分组,无需硬编码列前缀:

from collections import defaultdict

col_groups = defaultdict(list)
for col in test.columns:
    # 提取列名末尾的数字作为分组标识
    suffix = ''.join(filter(str.isdigit, col))
    col_groups[suffix].append(col)

# 按序号排序后生成目标嵌套列表
vars = [col_groups[k] for k in sorted(col_groups.keys(), key=int)]

优势

  • 扩展性更强,新增任意前缀的指标列都会自动归到对应序号的组里,无需修改代码
  • 性能比多次遍历test.columns更高,只需遍历一次列名即可完成分组

注意事项

你原代码中存在变量名大小写不一致的问题,定义的变量是date,后续用的时候写的是Date,实际运行会报错,请注意统一变量名规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:51:00