Python使用pandas按Group_Number分组生成txt无法写入全部成员问题
代码调整方案
核心问题原因
你原有代码的问题主要有2处:
- 遍历逻辑错误:逐行遍历整个数据集,每次用
w(覆盖写入)模式打开同组文件,导致之前写入的内容被清空,最终只保留最后一条同组数据的内容 groupby用法错误:你在定义分组时引用了未声明的变量i,没有正确按Group_Number字段完成分组
调整后完整代码
import pandas as pd # 仅需读取一次Excel文件,无需重复读取 df = pd.read_excel(r'C:\Users\aross9\Desktop\outFile\GroupRoster05272021.xlsx') # 输出文件路径模板 file_path_tpl = r'C:\Users\aross9\Desktop\outFile\{}.txt' # 按Group_Number字段完成分组 for group_num, group_df in df.groupby('Group_Number'): # 取当前分组第一行的公共信息(同组的组名、负责人、邮箱都是一致的) base_info = group_df.iloc[0] # 写入文件 with open(file_path_tpl.format(group_num), 'w', encoding='utf-8') as f: # 先写入组基础信息 f.write(f"{base_info['Group_Number']}, {base_info['Group_Name']}\n") f.write(f"{base_info['Process_Owner']}\n") f.write(f"{base_info['Email_Address']}\n\n") # 追加写入当前组所有成员的信息 for _, member_row in group_df.iterrows(): f.write(f"{member_row['MESSAGING_ID']} {member_row['NAME']}\n")
代码说明
- 一次性读取完整Excel数据,减少IO开销
- 直接按
Group_Number分组,每次循环拿到的group_df就是当前组的所有行数据 - 同组的公共信息仅取第一行写入,避免重复
- 写完基础信息后遍历当前分组的所有行,写入所有成员的ID和姓名
- 增加
encoding='utf-8'参数避免写入中文时出现乱码,如果你不需要可以删除
内容的提问来源于stack exchange,提问作者Acr Rca
相关产品推荐
相关产品推荐

