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

如何将Pandas DataFrame按指定列唯一值拆分为多个子DF或对应值列表

解决方案

两种需求都可以通过pandas原生groupby接口实现,无需手动枚举Type列的唯一值,适配大数据量场景。

方案1:生成对应名称的列表(与你示例效果完全一致)

核心逻辑是分组后对Item列聚合为列表,再转为字典,也可以直接绑定为全局变量直接调用:

import pandas as pd

# 构造示例DataFrame,你实际使用时替换为自己的df即可
df = pd.DataFrame({
    'Type': ['Cars', 'Cars', 'Cars', 'Fruits', 'Fruits', 'Countries', 'Countries'],
    'Item': ['Toyota', 'Honda', 'Tesla', 'Apple', 'Orange', 'USA', 'Mexico']
})

# 生成键为Type值、值为对应Item列表的字典
res_dict = df.groupby('Type')['Item'].agg(list).to_dict()

# 如果需要直接生成Cars、Fruits这类命名的全局变量,执行以下代码即可
for name, item_list in res_dict.items():
    globals()[name] = item_list

运行后你直接打印Cars就可以得到输出['Toyota', 'Honda', 'Tesla']。

方案2:按Type拆分为独立子DataFrame

核心逻辑是分组后直接把每个分组的DataFrame存入字典:

# 生成键为Type值、值为对应子DataFrame的字典
df_dict = dict(tuple(df.groupby('Type')))

# 如果需要直接生成对应命名的全局子DataFrame,执行以下代码
for name, sub_df in df_dict.items():
    globals()[name] = sub_df

运行后你访问Cars就会得到Type为Cars的所有行组成的子DataFrame。

性能说明

pandas的groupby本身做了底层优化,即使是百万级以上的数据集也可以高效处理,不需要手动逐行遍历。


内容的提问来源于stack exchange,提问作者markovv.sim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:57:01