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

如何使用for循环按唯一Region变量拆分数据集为多个DataFrame?

解决按Region拆分DataFrame的问题

我来帮你搞定这个拆分数据集的问题!你的思路方向是对的,但代码里有两个小细节没处理好,导致没得到预期结果,咱们一步步修正:

先说说你代码里的问题

  1. 筛选条件错误:你写的test == region是把整个DataFrame的所有单元格和region(比如"North")做比较,这显然不是你要的——你应该只针对Region列做筛选,也就是test['Region'] == region。
  2. 变量覆盖问题:每次循环你都把结果赋值给同一个reg变量,循环结束后只会剩下最后一个Region的DataFrame,之前的都会被覆盖,所以得用一个容器(比如字典)来保存每个拆分后的结果。

正确的实现步骤

1. 先创建示例数据集(方便测试)

import pandas as pd

data = {
    'ID': [1, 2, 3, 4],
    'Region': ['North', 'South', 'West', 'East'],
    'Other': ['x', 'y', 'z', 'l']
}
test = pd.DataFrame(data)

2. 用for循环拆分并保存结果

我们用字典来存储每个Region对应的DataFrame,这样既不会覆盖,后续调用也方便:

# 初始化一个空字典,用来存拆分后的DataFrame
region_dataframes = {}

# 遍历每个唯一的Region值
for region in test['Region'].unique():
    # 筛选出当前Region的所有行,注意这里是针对Region列做判断
    region_dataframes[region] = test[test['Region'] == region]

# 现在可以通过字典的键来访问每个拆分后的DataFrame了
print("North区域的DataFrame:")
print(region_dataframes['North'])
print("\nSouth区域的DataFrame:")
print(region_dataframes['South'])

3. 更简洁的替代方案(用groupby)

如果你想更高效,也可以直接用pandas的groupby方法,一行代码就能完成拆分:

region_dataframes = {region: group for region, group in test.groupby('Region')}

这样拆分后,你可以通过region_dataframes['North']、region_dataframes['South']等直接获取对应区域的数据集啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:22:51