使用Pandas读取Excel时如何跳过指定列以提升性能?
解决Pandas读取Excel时跳过指定列的问题
嘿,这个需求其实挺实用的,尤其是处理大Excel文件的时候——Pandas的read_excel确实没提供直接的skip_cols参数,但我们有两种高效的办法实现,完全能达到你想要的性能优化效果:
方法一:先获取表头再筛选保留列
这种方法适合你不确定列的顺序,但明确知道要跳过的列名的场景,而且只需要读取一次表头,几乎不占额外资源:
import pandas as pd # 定义要跳过的列 cols_to_skip = ['col_a', 'col_b', 'col_zz'] # 先读取Excel的表头(只加载第一行,速度极快) xls = pd.ExcelFile('large_excel_file.xlsx') all_columns = xls.parse(sheet_name=0, nrows=0).columns.tolist() # 计算需要保留的列(排除要跳过的) cols_to_keep = [col for col in all_columns if col not in cols_to_skip] # 读取时只加载需要的列 df = pd.read_excel('large_excel_file.xlsx', usecols=cols_to_keep)
方法二:用lambda函数直接过滤列名
这个方法更简洁,不需要单独读取表头,Pandas会在读取过程中自动过滤掉指定列,性能同样出色:
import pandas as pd # 用集合存储要跳过的列,查找速度更快(大列数场景更明显) cols_to_skip = {'col_a', 'col_b', 'col_zz'} # 通过usecols的lambda参数直接过滤 df = pd.read_excel('large_excel_file.xlsx', usecols=lambda col: col not in cols_to_skip)
重要提醒
别用先读取整个DataFrame再drop列的方式!比如df = pd.read_excel(...).drop(cols_to_skip, axis=1)——这种方法会先加载整个大文件到内存,完全失去了性能优化的意义,上面两种方法都是在读取阶段就跳过不需要的列,内存占用和读取速度都会大幅提升。
内容的提问来源于stack exchange,提问作者Juan David
相关产品推荐
相关产品推荐

