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

如何遍历Pandas DataFrame并按指定列唯一值拆分为多个独立DataFrame

实现Pandas DataFrame按指定列拆分的方法

如果你的原始DataFrame存储在列表中,先取出对应的DataFrame对象即可,示例为df = 你的列表名[索引值]。
两种常用的实现方式如下,可根据需求选择:

方法1:用groupby直接拆分(更简洁,无需手动枚举ID值)

不需要提前知道ID列的具体取值,groupby会自动按所有唯一ID值拆分,结果可以存在字典中方便调用:

import pandas as pd

# 示例原始DataFrame,实际使用时替换为你自己的df
df = pd.DataFrame({
    'ID': ['0902', '0105', '0902', '0105', '0902'],
    'Colour': ['红', '蓝', '绿', '黄', '紫'],
    'Transport': ['公交', '地铁', '开车', '骑车', '步行']
})

# 按ID列拆分,字典的key为ID值,value为对应的子DataFrame
df_dict = dict(tuple(df.groupby('ID')))

# 按需求取出对应ID的独立DataFrame
df1 = df_dict['0902']
df2 = df_dict['0105']
  • 优势:不需要手动写遍历逻辑,也不用硬编码ID取值,后续ID新增其他值时无需修改代码即可自动完成拆分。

方法2:手动遍历唯一值拆分(符合遍历实现的要求)

如果你明确需要用遍历方式实现,可以按以下逻辑编写:

# 先获取ID列所有唯一取值
unique_ids = df['ID'].unique()

# 遍历拆分后存到列表中
result_dfs = []
for id_val in unique_ids:
    # 筛选对应ID的行,加copy()生成独立副本避免修改子df时影响原df
    sub_df = df[df['ID'] == id_val].copy()
    result_dfs.append(sub_df)

# 取出对应子DataFrame,顺序和unique_ids的返回顺序一致
df1 = result_dfs[0] # 对应第一个出现的ID,示例中为0902
df2 = result_dfs[1] # 对应第二个出现的ID,示例中为0105

注意:如果需要对子DataFrame做修改且不影响原始DataFrame,务必加.copy()方法生成独立副本,避免触发Pandas的链式索引警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:36:04