Pandas_Excel文件的拆分合并

# 需求:将Excel中的任务均等分配给多个人?在Excel中新增一列分配任务的每个人的人名。
# 1)将一个大的Excel等扽拆成多个Excel,使用df.iloc方法,将一个大的dataframe,拆分成多个小的dataframe
# 将使用dataframe.to_excel保存每个小Excel
# 计算拆分后的每隔excel的行数
# 1.1)将一个大excel 拆分给这几个人
user_names = ['xiao_shuai', 'xiao_wang', 'xiaoming', 'xiao_lei', 'xiao_bo', 'xiao_hong']
# 1.2)计算每个人的任务数目 除法向下取整
split_size = total_row_count // len(user_names)
if total_row_count % len(user_names) != 0:
split_size += 1
split_size
# 1.3)拆分成多个dataframe
df_subs = []
for idx, user_name in enumerate(user_names):
begin = idx * split_size # iloc的开始索引
end = begin + split_size # iloc的结束索引
df_sub = df_source.iloc[begin:end] # 实现df按照iloc拆分
df_subs.append((idx, user_name, df_sub)) # 将每个子df存入列表
for idx, user_name, df_sub in df_subs:
file_name = f'{splits_dir}/split_{idx}_{user_name}.xlsx'
df_sub.to_excel(file_name, index=False)
# 2)合并多个小Excel到一个大Excel
# 2.1)遍历文件夹,得到要合并的Excel文件列表
excel_names = []
for excel_name in os.listdir(splits_dir):
excel_names.append(excel_name)
# 2.2)分别读取到dataframe,给每个df添加一行用于标记来源
df_list = []
for excel_name in excel_names:
excel_path = f'{splits_dir}/{excel_name}'
df_split = pd.read_excel(excel_path)
user_name = excel_name.replace('split_', '').replace('.xlsx', '')[2:]
print(excel_name, user_name)
df_split['username'] = user_name # 给每隔df添加1列,即用户名字
df_list.append(df_split)
# 2.3)使用pd.concat进行df批量合并
df_merged = pd.concat(df_list)
df_merged['username'].value_counts()
# 2.4)将合并后的dataframe输出到excel
df_merged.to_excel(f'{work_dir}/merged_data.xlsx', index=False)
posted @   aall_blue  阅读(157)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示