pandas批量合并excel,拆分excel

# excel拆分多个 excel
import pandas as pd
work_dir = './coursr/'
split_dir=f"{work_dir}/splits"

import os
if not os.path.exists(split_dir):
    os.mkdir(split_dir)

df_source = pd.read_excel(f'{work_dir}/example.xlsx')

total_row_count = df_source.shape[0]  # 查看多少行

user_names = ['zhang','li','xiao','yian','yuan']
split_size = total_row_count//len(user_names)

if total_row_count%len(user_names) !=0:
    split_size +=1

# 拆分
df_subs = []
for idx,user_name in enumerate(user_names):
    begin = idx*split_size
    end = begin + split_size
    df_sub=df_source.iloc[begin:end]
    df_subs.append((idx,user_name,df_sub))

# 每个dataframe写入
for idx,user_name,df_sub in df_subs:
    file_name = f"{split_dir}/write_{idx}_{user_name}.xlsx"
    df_sub.to_excel(file_name,index=False)



# 合并格式相同的小excel表
import os
excel_names = []
for excel_name in os.listdir(split_dir):
    excel_names.append(excel_name)


df_list = []
for excel_name in excel_names:
    #读取每个excel到df
    excel_path = f"{split_dir}/{excel_name}"
    df_split = pd.read_excel(excel_path)
    #得到user_name
    user_name = excel_name.replace('.xlsx','')[2:]
    # 给每个用户添加一列,即用户名字
    df_split['username']=user_name
    df_list.append(df_split)


df_merge = pd.concat(df_list)
df_merge['username'].value_counts()

df_merge.to_excel(f'{work_dir}/合并.xlsx',index=False)







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值