Python一键搞定Excel数据自动分配

作者:

文章目录
  • 假设你有这样一份 Excel 表(“水果分箱.xlsx”): 水果总数 箱 1 箱 2 箱 3 箱 4 箱 5 箱 6 32 130 77 124 117 20 要按规则分箱(每箱≤24 个,最多 6 箱),手动算会遇到: 余数难处理:50 个苹果,24×2=48,剩 2 个,得手动补 1 箱(共 3 箱:24,24,2); 空值易出错:橙子总数为空,手动可能填错成 0 或漏填; 批量效率低:100 行数据要算 100 次,改规则(如每箱 20 个)又得重算。 而 Python 代码能自动解决这些问题,全程不用手动计算!
  • 这段代码核心是 “读取 Excel→按规则分箱→写回 Excel”,共 7 步,每步都有明确目的,我们逐行拆解:
  • 自动处理空值:遇到 “水果总数” 为空的行,自动填 6 个 0,避免漏填; 灵活修改规则:想改 “每箱 30 个、最多 8 箱”,只需改 max_per_box 和 max_boxes 两个参数; 覆盖旧列不报错:如果原 Excel 已有 “箱 1” 列,会自动覆盖旧数据,不用手动删除。
  • Excel 文件位置:要把 “水果分箱.xlsx” 和代码放在同一个文件夹,否则要写全文件路径(比如pd.read_excel(‘D:/工作/水果分箱.xlsx’)); 处理其他数据:除了水果,商品包装、物料分配也能用,只需把 “水果总数” 改成 “商品总数”“物料总数”; 查看中间结果:想确认分箱是否正确,可在第 5 步后加print(boxes_df),运行时会显示分箱结果。
  • 生成的结果 Excel(水果分箱结果.xlsx): 水果总数 箱 1 箱 2 箱 3 箱 4 箱 5 箱 6 32 16 15 130 22 22 22 22 21 21 77 20 19 19 19 124 21 21 21 21 20 20 117 24 24 23 23 23 20 20
  • import pandas as pd import math # === 1. 读取 Excel 数据 === df = pd.read_excel(‘水果分箱.xlsx’) # === 2. 参数设置 === max_per_box = 24 # 每箱最多装 24 个 max_boxes = 6 # 最多 6 箱 # === 3. 分箱计算函数 === def split_into_boxes(total, max_per_box=24, max_boxes=6): if pd.isna(total): return [0] * max_boxes total = int(total) num_boxes = math.ceil(total / max_per_box) num_boxes = min(num_boxes, max_boxes) base = total // num_boxes remainder = total % num_boxes boxes = [base + 1 if i < remainder else base for i in range(num_boxes)] boxes += [0] * (max_boxes – num_boxes) return boxes # === 4. 分配结果计算 === result = df[‘水果总数’].apply(split_into_boxes) boxes_df = pd.DataFrame(result.tolist(), columns=[f’箱 {i}’ for i in range(1, max_boxes + 1)]) # === 5. 写入回原表(如果已存在箱列则覆盖) === for col in boxes_df.columns: df[col] = boxes_df[col] # === 6. 显示结果 === print(df) # === 7. 保存为新文件 === df.to_excel(‘水果分箱结果.xlsx’, index=False) print(” 已生成文件:水果分箱结果.xlsx “) 如果需要调整分箱规则(比如按重量分箱),或者处理 CSV 文件,都可以留言告诉我,咱们再优化代码~ 到此这篇关于Python一键搞定Excel数据自动分配的文章就介绍到这了,更多相关Python Excel数据自动分配内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 利用Python自动化实现Excel单元格数据验证 Python自动化实现写入数据到Excel文件 Python读写Excel大数据文件的3种有效方式对比 Python+JavaScript实现浏览器读取本地excel数据 python使用pandas读取excel文件中数据的四种方法 Python实现Excel数据对比的实用方案 Python数据处理之Excel报表自动化生成与分析 浅析Python如何在Excel中应用数据透视表
  • 目录
    • 一、场景痛点:手动分箱的 3 个坑
    • 二、代码拆解:5 分钟看懂分箱逻辑
      • 1. 导入工具库
      • 2. 读取 Excel 数据
      • 3. 分箱规则参数化(关键!方便修改)
      • 4. 核心分箱函数(代码的 “大脑”)
      • 5. 批量计算所有水果的分箱结果
      • 6. 写回原表格 + 保存文件
    • 三、代码技术要点:3 个贴心设计
      • 四、实操小贴士:新手必看
        • 五、效果演示:输入→输出
          • 六、全部源代码(复制即用)

            做库存管理、生鲜分拣时,你是不是也遇到过这些麻烦?—— 手里有几十行水果总数数据,要按 “每箱最多 24 个、最多分 6 箱” 的规则分配,手动算不仅慢,还容易漏算余数、填错单元格。

            今天分享一段 Python 代码,3 步完成 Excel 水果分箱,自动处理空值、覆盖旧列,新手也能直接用!

            假设你有这样一份 Excel 表(“水果分箱.xlsx”):

            水果总数 箱 1 箱 2 箱 3 箱 4 箱 5 箱 6
            32
            130
            77
            124
            117
            20

            要按规则分箱(每箱≤24 个,最多 6 箱),手动算会遇到:

            • 余数难处理:50 个苹果,24×2=48,剩 2 个,得手动补 1 箱(共 3 箱:24,24,2);
            • 空值易出错:橙子总数为空,手动可能填错成 0 或漏填;
            • 批量效率低:100 行数据要算 100 次,改规则(如每箱 20 个)又得重算。

            而 Python 代码能自动解决这些问题,全程不用手动计算!

            这段代码核心是 “读取 Excel→按规则分箱→写回 Excel”,共 7 步,每步都有明确目的,我们逐行拆解:

            import pandas as pd  # 处理Excel数据的“神器”
            import math          # 用于计算箱子数量(向上取整)
            

            → 只需这两个库,安装命令:pip install pandas openpyxl(openpyxl 是读取 Excel 的依赖)。

            df = pd.read_excel('水果分箱.xlsx')
            

            → 把 Excel 文件读成 “数据表格”(DataFrame),后续所有操作都在这个表格上进行。

            max_per_box = 24   # 每箱最多装24个(想改20个?直接改这个数)
            max_boxes = 6      # 最多分6箱(要分8箱?改这里就行)
            

            → 所有规则集中在这里,不用改核心代码,新手也能灵活调整。

            def split_into_boxes(total, max_per_box=24, max_boxes=6):
                # 1. 处理空值:如果“水果总数”是空的,返回6个0(对应6箱)
                if pd.isna(total):
                    return [0] * max_boxes
                # 2. 确保总数是整数(避免Excel里的小数问题)
                total = int(total)
                # 3. 计算需要多少箱子:总数÷每箱数,向上取整(比如50÷24=2.08→需3箱)
                num_boxes = math.ceil(total / max_per_box)
                # 4. 限制最多6箱:即使需要7箱,也只分6箱(符合规则)
                num_boxes = min(num_boxes, max_boxes)
                # 5. 分配数量:先算每箱基础数,余数分给前几箱(避免某箱数量超标)
                base = total // num_boxes  # 基础数量(如50÷3=16)
                remainder = total % num_boxes  # 余数(50%3=2)
                # 前2箱分16+1=17个,第3箱分16个,后面补0到6箱
                boxes = [base + 1 if i < remainder else base for i in range(num_boxes)]
                boxes += [0] * (max_boxes - num_boxes)
                return boxes
            

            举个例子:50 个苹果代入函数:

            • num_boxes=math.ceil (50/24)=3(需 3 箱)
            • base=50//3=16,remainder=50%3=2
            • boxes=[17,17,16,0,0,0](前 2 箱 17 个,第 3 箱 16 个,后 3 箱 0)

            完美符合 “每箱≤24、最多 6 箱” 的规则!

            # 对“水果总数”列的每一行,都执行分箱函数
            result = df['水果总数'].apply(split_into_boxes)
            # 把结果转成新表格,列名是“箱 1”到“箱 6”
            boxes_df = pd.DataFrame(result.tolist(), columns=[f'箱 {i}' for i in range(1, max_boxes + 1)])
            

            → 不管 Excel 有多少行数据,1 行代码就能批量处理,比手动快 10 倍!

            # 把分箱结果列(箱1-箱6)写入原Excel表,已有这些列就覆盖(避免手动删空列)
            for col in boxes_df.columns:
                df[col] = boxes_df[col]
            # 保存为新文件,不保留索引(Excel更整洁)
            df.to_excel('水果分箱结果.xlsx', index=False)
            print("已生成文件:水果分箱结果.xlsx ")
            

            → 不用手动复制粘贴,直接得到带分箱结果的 Excel,打开就能用!

            自动处理空值:遇到 “水果总数” 为空的行,自动填 6 个 0,避免漏填;

            灵活修改规则:想改 “每箱 30 个、最多 8 箱”,只需改 max_per_box 和 max_boxes 两个参数;

            覆盖旧列不报错:如果原 Excel 已有 “箱 1” 列,会自动覆盖旧数据,不用手动删除。

            Excel 文件位置:要把 “水果分箱.xlsx” 和代码放在同一个文件夹,否则要写全文件路径(比如pd.read_excel(‘D:/工作/水果分箱.xlsx’));

            处理其他数据:除了水果,商品包装、物料分配也能用,只需把 “水果总数” 改成 “商品总数”“物料总数”;

            查看中间结果:想确认分箱是否正确,可在第 5 步后加print(boxes_df),运行时会显示分箱结果。

            生成的结果 Excel(水果分箱结果.xlsx):

            水果总数 箱 1 箱 2 箱 3 箱 4 箱 5 箱 6
            32 16 15
            130 22 22 22 22 21 21
            77 20 19 19 19
            124 21 21 21 21 20 20
            117 24 24 23 23 23
            20 20

            import pandas as pd
            import math
            
            # === 1. 读取 Excel 数据 ===
            df = pd.read_excel('水果分箱.xlsx')
            
            # === 2. 参数设置 ===
            max_per_box = 24   # 每箱最多装 24 个
            max_boxes = 6      # 最多 6 箱
            
            # === 3. 分箱计算函数 ===
            def split_into_boxes(total, max_per_box=24, max_boxes=6):
                if pd.isna(total):
                    return [0] * max_boxes
                total = int(total)
                num_boxes = math.ceil(total / max_per_box)
                num_boxes = min(num_boxes, max_boxes)
            
                base = total // num_boxes
                remainder = total % num_boxes
                boxes = [base + 1 if i < remainder else base for i in range(num_boxes)]
                boxes += [0] * (max_boxes - num_boxes)
                return boxes
            
            # === 4. 分配结果计算 ===
            result = df['水果总数'].apply(split_into_boxes)
            boxes_df = pd.DataFrame(result.tolist(), columns=[f'箱 {i}' for i in range(1, max_boxes + 1)])
            
            # === 5. 写入回原表(如果已存在箱列则覆盖) ===
            for col in boxes_df.columns:
                df[col] = boxes_df[col]
            
            # === 6. 显示结果 ===
            print(df)
            
            # === 7. 保存为新文件 ===
            df.to_excel('水果分箱结果.xlsx', index=False)
            print(" 已生成文件:水果分箱结果.xlsx ")
            
            

            如果需要调整分箱规则(比如按重量分箱),或者处理 CSV 文件,都可以留言告诉我,咱们再优化代码~

            到此这篇关于Python一键搞定Excel数据自动分配的文章就介绍到这了,更多相关Python Excel数据自动分配内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

            您可能感兴趣的文章:

            • 利用Python自动化实现Excel单元格数据验证
            • Python自动化实现写入数据到Excel文件
            • Python读写Excel大数据文件的3种有效方式对比
            • Python+JavaScript实现浏览器读取本地excel数据
            • python使用pandas读取excel文件中数据的四种方法
            • Python实现Excel数据对比的实用方案
            • Python数据处理之Excel报表自动化生成与分析
            • 浅析Python如何在Excel中应用数据透视表

            站内搜索