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

如何通过For循环从指定DataFrame生成目标嵌套列表?

基于DataFrame生成指定嵌套列表

原始DataFrame定义

import pandas as pd

data={'column1':[1,1,1,1,1,1,1,1,2,2,2,2],'person':['A','A','A','A','B','B','B','B','C','C','C','C'],'location1':['GOA','BANGLORE','GOA','BANGLORE','BANGLORE','DELHI','BANGLORE','DELHII','KOCHI','DELHI','DELHI','KOCHI'],'location2':['BANGLORE','GOA','GOA','BANGLORE','DELHI','DELHI','BANGLORE','BANGLORE','DELHI','KOCHI','DELHI','KOCHI'],'time':[20,40,0,0,34,0,0,23,21,56,0,0]}

df = pd.DataFrame(data)

需求

根据上述DataFrame生成按column1分组,再按person分组的嵌套列表结构,每个person对应的行数据以[location1, location2, time]的子列表形式存在。

尝试的代码(未完成需求)

for i in set(df.column1):
    for j in set(df.person):
            col=['location1','location2','time']
            print(df[col].values.tolist())

解决方案

以下代码可实现目标嵌套结构,核心逻辑是先按column1筛选分组,再在每个组内按person筛选,最后提取指定列转为子列表:

# 初始化最终嵌套列表
nested_result = []

# 遍历column1的唯一值(排序保证顺序一致)
for col1_val in sorted(df['column1'].unique()):
    # 存储当前column1下的所有person组
    col1_group = []
    # 筛选当前column1对应的所有行
    col1_subset = df[df['column1'] == col1_val]
    
    # 遍历当前column1下的person唯一值(排序保证顺序)
    for person_val in sorted(col1_subset['person'].unique()):
        # 筛选当前person对应的行,提取指定列转为列表
        person_rows = col1_subset[col1_subset['person'] == person_val][['location1', 'location2', 'time']].values.tolist()
        col1_group.append(person_rows)
    
    nested_result.append(col1_group)

# 输出结果
print(nested_result)

代码说明

  1. 用sorted(df['column1'].unique())获取有序的column1唯一值,避免集合遍历的无序性;
  2. 对每个column1值,筛选出对应行后,再遍历该子集内的person唯一值;
  3. 针对每个person,提取location1、location2、time三列的数据,转为二维列表后加入对应分组;
  4. 最终形成column1组 → person组 → 行数据子列表的三层嵌套结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:33:25