基于现有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
相关产品推荐
相关产品推荐

