如何用Python将指定唯一值分组生成不同Excel工作簿
Python按指定分组生成独立Excel工作簿
需求说明
- 要实现的功能:用Python把表格某一列的指定唯一值分成几组,每组单独生成一个Excel工作簿
- 输入数据:
data = {'Name': ['Tom', 'nick', 'nick', 'jack'], 'Age': [20, 21, 19, 18]}
- 目标输出:
- 生成
Tom组.xlsx:仅包含Tom的一行数据 - 生成
Nick&Jack组.xlsx:包含Nick的两行数据和Jack的一行数据
- 生成
- 当前遇到的问题:
- 现有代码只能按唯一值生成同一Excel里的多个工作表,无法生成独立的Excel工作簿
- 不知道如何将多个唯一值合并到同一个工作簿中
已尝试代码
df1_dict={} for name in df1['name'].unique(): name_df1 = df1[df1['name'] == name] df1_dict[name] = name
解决方案
第一步:安装依赖并构造数据表格
先确保安装了pandas,没安装的话在终端执行pip install pandas即可。然后将输入数据转换为pandas可处理的表格:
import pandas as pd # 把输入数据转为DataFrame表格 data = {'Name': ['Tom', 'nick', 'nick', 'jack'], 'Age': [20, 21, 19, 18]} df = pd.DataFrame(data)
第二步:定义分组规则
用字典明确每个值对应的分组名称,灵活控制哪些值合并到同一工作簿:
# 分组映射:键是Name列的唯一值,值是对应的分组名称 group_mapping = { 'Tom': 'Tom组', 'nick': 'Nick&Jack组', 'jack': 'Nick&Jack组' }
第三步:添加分组标签并分组
给原表格新增一列分组标签,再按该列对数据进行分组:
# 给每行数据添加对应的分组标签 df['分组'] = df['Name'].map(group_mapping) # 按分组标签对数据进行聚合分组 grouped = df.groupby('分组')
第四步:遍历分组生成独立工作簿
逐个处理每个分组,将每组数据保存为独立的Excel文件:
# 遍历每个分组,生成对应的Excel工作簿 for group_name, group_data in grouped: # 移除分组列(可选,根据需求决定是否保留) output_data = group_data.drop(columns=['分组']) # 保存为Excel文件,文件名使用分组名称 output_data.to_excel(f'{group_name}.xlsx', index=False)
完整代码
import pandas as pd # 构造输入数据表格 data = {'Name': ['Tom', 'nick', 'nick', 'jack'], 'Age': [20, 21, 19, 18]} df = pd.DataFrame(data) # 定义分组规则 group_mapping = { 'Tom': 'Tom组', 'nick': 'Nick&Jack组', 'jack': 'Nick&Jack组' } # 添加分组标签并分组 df['分组'] = df['Name'].map(group_mapping) grouped = df.groupby('分组') # 生成每个分组的Excel工作簿 for group_name, group_data in grouped: output_data = group_data.drop(columns=['分组']) output_data.to_excel(f'{group_name}.xlsx', index=False)
代码说明
map(group_mapping):快速将Name列的值映射为对应分组名称,实现多值合并分组groupby('分组'):按分组列将数据聚合成多个子表格to_excel():将每个子表格保存为独立Excel工作簿,index=False表示不保存表格自带的行索引- 用分组名称作为文件名,直观识别文件内容
内容的提问来源于stack exchange,提问作者Jvass001
相关产品推荐
相关产品推荐

