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

基于现有Pandas DataFrame按区域拆分生成新DataFrame的问题

按Region拆分DataFrame并导出的正确方法

看来你在按Region拆分DataFrame并导出的时候走了点弯路,我来帮你理清楚正确的做法:

问题分析

你之前尝试用df['northregion'] = df.region == 'North'生成布尔列,再用pivot_table来创建新DataFrame,这其实用错了工具——pivot_table是用来做数据聚合透视的(比如求和、均值统计),而你需要的是筛选指定区域的行并提取特定列,所以才会得到全是True/False的结果。

正确步骤

1. 读取原始数据(如果还没做)

首先确保你已经把CSV读取成了pandas DataFrame:

import pandas as pd

# 读取CSV文件
df = pd.read_csv('your_data.csv')
# 你的原始数据列名:Region, Name, utilization, capacity

2. 按Region拆分出指定列的DataFrame

这里有两种简洁的方式:

方法一:遍历唯一区域值筛选
# 定义需要保留的列(注意和原数据列名大小写一致)
target_columns = ['Name', 'utilization', 'capacity']

# 创建字典存储每个区域的DataFrame
region_dataframes = {}

# 遍历所有唯一的Region值
for region in df['Region'].unique():
    # 筛选当前区域的行,提取目标列,重置索引
    region_dataframes[region] = df[df['Region'] == region][target_columns].reset_index(drop=True)
方法二:用groupby更高效拆分

如果数据量较大,用groupby会更高效:

target_columns = ['Name', 'utilization', 'capacity']
region_dataframes = {
    region: group[target_columns].reset_index(drop=True) 
    for region, group in df.groupby('Region')
}

执行后,region_dataframes['North']就是你想要的North区域DataFrame:

Name  utilization  capacity
0  Westfield           10        20
1  ShadyAcres          100       300

3. 导出为CSV或JSON

遍历存储的DataFrame,批量导出:

# 导出为CSV(每个区域一个文件)
for region, df_region in region_dataframes.items():
    df_region.to_csv(f'{region}_data.csv', index=False)

# 导出为JSON(用records格式更易读)
for region, df_region in region_dataframes.items():
    df_region.to_json(f'{region}_data.json', orient='records')

这样就能得到每个区域独立的CSV/JSON文件,完全符合你的需求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:45:58