提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档提示以下是本篇文章正文内容下面案例可供参考目录一、pandas替代 Excel 自动填充数据赋值与日期递增核心说明完整代码如下二、pandas替代 Excel 函数计算数值运算与批量修改核心说明完整代码如下三、替代 Excel 最值 / 排序多条件排序控制核心说明完整代码如下四、替代 Excel 筛选功能布尔索引实现精准筛选核心说明完整代码如下新增模糊筛选 query 简化 结果导出五、Excel vs pandas 核心操作对比表总结一、pandas替代 Excel 自动填充数据赋值与日期递增Excel 的自动填充包括序列填充、空值填充、日期递增等pandas 中需重点解决NaN 类型兼容和日期递增逻辑问题路径适配避坑Windows 系统盘符后需加/如D:/或双反斜杠否则os.path.join拼接出的绝对路径缺失分隔符导致文件找不到类型转换避坑列含 NaN 时直接转字符串会残留 “nan” 字符需先fillna()填充空值日期列填pd.NaT、文本列填空字符串再astype()转类型日期递增日递增用Timedelta年递增直接修改date年份月份递增需自定义算法满 12 进 1且新增日期越界适配用monthrange获取当月最后一天避免 2 月 30 日、1 月 31 日 1 月 2 月 31 日等非法日期报错批量填充通过for迭代 at[]实现单元格精准赋值对标 Excel 手动填充序列ID 序列、Yes/No 文本、按月递增日期引擎指定避坑读取 / 导出 xlsx 文件时需指定engineopenpyxl避免新版 pandas / 中文路径下读取失败索引处理设 ID 为索引时加dropTrue移除原 ID 列避免重复列残留完整代码如下# 导入核心库数据处理日期操作日历处理日期越界系统路径 import pandas as pd from datetime import date from calendar import monthrange import os # 自定义月份递增函数解决Excel按月填充满12进1年日期越界问题 def add_month(d, md): yd md // 12 # 计算年增量 m d.month md % 12 # 计算月份增量 if m ! 12: yd m // 12 m m % 12 # 处理日期越界如2月30日、1月31日1月2月31日 target_year d.year yd last_day monthrange(target_year, m)[1] # 获取目标月份最后一天 return date(target_year, m, min(d.day, last_day)) # 自动适配合法日期 # Windows系统盘符后添加反斜杠确保绝对路径正确 # 方式1盘符后加/推荐跨系统兼容 input_path os.path.join(D:/, py2, pywork, 3读取不连续区域.xlsx) output_path os.path.join(D:/, py2, pywork, 3Output.xlsx) # 方式2备选用双反斜杠仅Windows # input_path D:\\py2\\pywork\\3读取不连续区域.xlsx # output_path D:\\py2\\pywork\\3Output.xlsx # 1. 读取Excel文件指定openpyxl引擎适配xlsx格式 books pd.read_excel( input_path, skiprows4, # 跳过前4行 usecolsC:F, # 仅读取C-F列 index_colNone, # 不预设索引 dtype{ID: str, InStore: str}, # 指定列类型避免NaN报错 engineopenpyxl # xlsx文件专用引擎 ) # 2. 完整处理空值避免残留nan字符串 books[Date] books[Date].fillna(pd.NaT) # 日期列空值填充为时间类型空值 books[ID] books[ID].fillna().astype(str) # ID列空值填充为空字符串后转字符 books[InStore] books[InStore].fillna().astype(str) # InStore列同理 # 3. 批量自动填充数据对标Excel自动填充 start_date date(2018, 1, 1) for i in books.index: books.at[i, ID] str(i 1) # 填充ID序列1、2、3... books.at[i, InStore] Yes if i % 2 0 else No # 奇偶行填充Yes/No books.at[i, Date] add_month(start_date, i) # 按月递增填充日期 # 4. 设置索引并导出文件 books.set_index(ID, inplaceTrue, dropTrue) # 将ID设为索引移除原ID列 books.to_excel(output_path, engineopenpyxl) # 导出填充后的数据 # 打印成功提示显示具体路径 print(f数据填充完成文件已保存至{output_path})二、pandas替代 Excel 函数计算数值运算与批量修改核心说明Excel 的公式计算在 pandas 中可通过两种方式实现兼顾简洁性和灵活性基础运算直接用/-/*/实现加减乘除局部区域计算可通过range()限定迭代范围批量修改用Series.apply() 匿名函数lambda实现统一运算如所有值 2比迭代更高效注意事项运算前需确保列类型与数值匹配如 ID 为字符串时不可直接运算避免类型报错新增补充复杂函数如四舍五入、条件计算可结合numpy或自定义函数适配 Excel 复杂公式。完整代码如下import pandas as pd import numpy as np # 读取数据兼容上一步输出文件 output_path os.path.join(D:, py2, pywork, 3Output.xlsx) try: books pd.read_excel(output_path, engineopenpyxl) except: # 若无文件构造测试数据 books pd.DataFrame({ ID: [1,2,3,4,5,6], ListPrice: [10.5, 20.8, 15.3, 30.2, 25.7, 18.9] }) # 场景1基础算术运算对标Excel公式A12 # 方法1直接运算简洁推荐 books[ListPrice] books[ListPrice] 2 # 方法2apply匿名函数适配复杂逻辑 books[ListPrice] books[ListPrice].apply(lambda x: x 2) # 场景2局部区域计算仅前5行数值5对标Excel选中区域公式 for i in range(min(5, len(books))): # 避免行数不足报错 books.at[i, ListPrice] books.at[i, ListPrice] 5 # 场景3复杂函数计算对标Excel的ROUND/IF嵌套公式 # 示例ListPrice≥30则四舍五入到整数否则保留1位小数 books[Price_Rounded] books[ListPrice].apply( lambda x: round(x) if x 30 else round(x, 1) ) # 场景4多列联动计算对标ExcelA1*B1C1 # 新增成本列计算利润售价-成本 books[Cost] books[ListPrice].apply(lambda x: x * 0.6) books[Profit] books[ListPrice] - books[Cost] # 数据校验避免负数价格 books[ListPrice] books[ListPrice].apply(lambda x: max(x, 0)) print(函数计算后的数据) print(books[[ID, ListPrice, Price_Rounded, Profit]])三、替代 Excel 最值 / 排序多条件排序控制核心说明Excel 的 “排序” 功能对应 pandas 的sort_values()核心规则单条件排序by列名指定排序列ascendingFalse设为降序默认升序多条件排序by[列1, 列2]按优先级排序ascending[布尔值1, 布尔值2]分别指定每列排序方向覆盖规则多次调用sort_values()时后执行的会覆盖前序排序结果新增补充可通过na_positionlast将空值排到末尾对标 Excel 空值排序规则key参数实现自定义排序逻辑。完整代码如下import pandas as pd # 构造示例数据含空值更贴近实际Excel场景 data { Product: [A, B, C, D, E, F], Price: [100, 200, None, 150, 100, 200], # 新增空值 Discount: [10, 5, 15, 8, 20, 7], Sales: [500, 800, 600, 700, 400, 900] } products pd.DataFrame(data) # 1. 单条件排序Price从高到低空值排末尾对标Excel products.sort_values( byPrice, ascendingFalse, inplaceTrue, na_positionlast # 空值排最后 ) print(Price降序空值排末尾排序结果) print(products) # 2. 多条件排序先Price降序再Discount升序最后Sales降序 products.sort_values( by[Price, Discount, Sales], ascending[False, True, False], # 分别指定每列排序方向 inplaceTrue, na_positionlast ) print(\n多条件排序结果) print(products) # 3. 自定义排序对标Excel自定义序列排序 # 示例按Product自定义顺序[B,C,A,D,E,F]排序 custom_order [B,C,A,D,E,F] products[Product_Order] products[Product].map({v:i for i,v in enumerate(custom_order)}) products.sort_values(byProduct_Order, inplaceTrue) products.drop(Product_Order, axis1, inplaceTrue) # 删除临时列 print(\n自定义Product顺序排序结果) print(products)# 多条件排序后最终结果含空值 Product Price Discount Sales 1 B 200.0 5 800 5 F 200.0 7 900 3 D 150.0 8 700 0 A 100.0 10 500 4 E 100.0 20 400 2 C NaN 15 600Price 空值C排最后Price200 时Discount 小的 B 先排Discount 相同则 Sales 大的优先完全贴合 Excel 的排序习惯。四、替代 Excel 筛选功能布尔索引实现精准筛选核心说明Excel 的 “筛选” 对应 pandas 的布尔索引核心规则单条件筛选df[df[列名] 条件]如价格 150多条件筛选用且/|或连接每个条件需用括号包裹匹配筛选用isin()实现 “多选值筛选”对标 Excel 勾选多个值新增补充str.contains()实现模糊筛选对标 Excel “包含” 筛选query()方法简化复杂条件filter()按列名筛选。完整代码如下新增模糊筛选 query 简化 结果导出import pandas as pd # 沿用上述products数据含空值 # 场景1单条件筛选Price150且非空 filter_single products[products[Price].gt(150) products[Price].notna()] print(Price150且非空的筛选结果) print(filter_single) # 场景2多条件筛选Price≥100 且 Discount10 且 Sales600 filter_multi products[ (products[Price] 100) (products[Discount] 10) (products[Sales] 600) ] print(\n多条件精准筛选结果) print(filter_multi) # 场景3值列表筛选Product为A/B/F的行 filter_list products[products[Product].isin([A, B, F])] print(\nProduct为A/B/F的筛选结果) print(filter_list) # 场景4模糊筛选对标Excel“包含”筛选Product含A或D filter_fuzzy products[products[Product].str.contains(A|D, naFalse)] # naFalse空值不匹配 print(\nProduct含A/D的模糊筛选结果) print(filter_fuzzy) # 场景5query()简化复杂条件更贴近Excel公式语法 filter_query products.query( Price 100 and Discount 10 and Sales 700 ) print(\nquery()简化筛选结果) print(filter_query) # 场景6筛选后导出对标Excel筛选后另存为 filter_query.to_excel( os.path.join(D:, py2, pywork, 筛选结果.xlsx), indexFalse, engineopenpyxl ) print(\n筛选结果已导出至Excel文件)五、Excel vs pandas 核心操作对比表Excel 操作pandas 实现方法核心优势自动填充序列for迭代 at[]/ 自定义日期函数支持批量 / 自定义规则无行数限制公式计算/-/*/IF/ROUND直接运算 /apply()lambda / 自定义函数批量运算效率高支持复杂逻辑单 / 多条件排序sort_values()ascending/na_position支持空值控制、自定义排序规则单 / 多条件筛选布尔索引 /isin()/str.contains()/query()条件更灵活支持模糊 / 正则筛选筛选后另存为to_excel()自动化导出支持批量处理总结自动填充重点解决 NaN 类型兼容先填充再转类型日期递增需自定义月份算法新增异常处理和路径适配避免实际使用中报错函数计算基础运算直接用运算符批量 / 复杂运算用apply()lambda新增多列联动、数据校验适配 Excel 复杂公式场景排序多条件排序按by列表优先级递减新增空值处理、自定义排序完全贴合 Excel 排序习惯筛选布尔索引是核心新增模糊筛选、query()简化语法、筛选结果导出覆盖 Excel 筛选全场景实操建议优先使用简洁方法如直接运算、布尔索引复杂场景用自定义函数 /apply()空值和类型转换是高频避坑点。