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

如何基于DataFrame的A列创建对应分组列表?

按A列分组生成对应B列的列表解决方案

问题描述

现有如下结构的DataFrame:

A     B      C
 1     14    100
 1     15    101
 1     16    102
 2     17    103
 2     18    104
 3     19    105
 3     20    106
...   ...    ...
 n     

需要针对A列中从1到n的每个数值,生成对应分组的B列值列表,输出示例如下:

l1 = [14, 15, 16] (对应A列的1)
l2 = [17,18]  (对应A列的2)
l3 = [19,20] (对应A列的3)

解决方案

方法1:用字典存储分组结果(推荐)

这种方式更灵活,便于后续统一管理和调用分组数据:

import pandas as pd

# 初始化示例DataFrame(实际使用时替换为你的数据)
df = pd.DataFrame({
    'A': [1,1,1,2,2,3,3],
    'B': [14,15,16,17,18,19,20],
    'C': [100,101,102,103,104,105,106]
})

# 按A列分组,将每组的B列转为列表,存入字典
grouped_data = df.groupby('A')['B'].apply(list).to_dict()

# 按要求格式输出
for a_num, b_list in grouped_data.items():
    print(f'l{a_num} = {b_list} (对应A列的{a_num})')

方法2:动态生成单独变量

如果确实需要生成l1、l2这类单独命名的变量,可以通过全局命名空间动态创建:

import pandas as pd

df = pd.DataFrame({
    'A': [1,1,1,2,2,3,3],
    'B': [14,15,16,17,18,19,20],
    'C': [100,101,102,103,104,105,106]
})

# 遍历分组,动态生成变量
for a_val, b_group in df.groupby('A')['B']:
    var_name = f'l{a_val}'
    globals()[var_name] = b_group.tolist()
    print(f'{var_name} = {globals()[var_name]} (对应A列的{a_val})')

注意:如果A列的分组数量n很大,不推荐方法2,大量单独变量会增加代码维护难度,方法1的字典存储更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:09:23