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

Python中DataFrame子集化报错求助:按Group列拆分DataFrame

解决按Group拆分DataFrame的问题

嘿,我来帮你搞定这个把DataFrame按Group拆分成多个子DataFrame的需求😉

首先先把你的输入数据还原出来,方便我们测试:

import pandas as pd

# 你的输入DataFrame df0
data = {
    'Index': [1, 2, 3, 4, 5],
    'Group': ['A', 'A', 'B', 'C', 'C'],
    'Value': [10.0, 15.0, 20.0, 10.0, 10.0]
}
df0 = pd.DataFrame(data).set_index('Index')

# 查看数据类型
print(df0.dtypes)
# 输出:
# Group     object
# Value    float64
# dtype: object

接下来给你三种不同的解决方案,按需选择:

方案1:手动拆分(适合分组少的场景)

如果你的Group只有A、B、C这几个,直接写条件筛选最直观,不容易出错:

df1 = df0[df0['Group'] == 'A']
df2 = df0[df0['Group'] == 'B']
df3 = df0[df0['Group'] == 'C']

方案2:自动生成变量(适合分组多的场景)

如果后续Group可能增加,不想手动写每个筛选条件,可以用循环动态生成对应的df变量:

# 获取所有唯一的Group值
unique_groups = df0['Group'].unique()

# 遍历分组,从df1开始命名
for idx, group_name in enumerate(unique_groups, start=1):
    # 用globals()动态创建全局变量
    globals()[f'df{idx}'] = df0[df0['Group'] == group_name]

# 验证一下df1的结果
print(df1)
# 输出:
#       Group  Value
# Index             
# 1         A   10.0
# 2         A   15.0

方案3:用字典管理分组(最推荐)

动态生成全局变量容易出现变量名冲突或者不好管理的问题,更推荐把分组后的DataFrame存在字典里,通过键名访问:

# 用groupby直接生成分组字典
grouped_dfs = {group: frame for group, frame in df0.groupby('Group')}

# 想要哪个分组直接取键就行
df1 = grouped_dfs['A']
df2 = grouped_dfs['B']
df3 = grouped_dfs['C']

# 甚至可以直接遍历字典操作所有分组
for group_name, sub_df in grouped_dfs.items():
    print(f"分组 {group_name} 的数据:")
    print(sub_df)

可能的报错排查

如果之前的代码报错,大概率是这几个原因:

  • 筛选条件写错了,比如把Group拼写成group(Pandas是大小写敏感的)
  • 用groupby的时候没指定列名,比如写成df0.groupby()而不是df0.groupby('Group')
  • 动态生成变量时,变量名格式不对,比如没用到字符串格式化

内容的提问来源于stack exchange,提问作者Dr. Mantis Tobbogan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:35:05