You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Excel数据库加载指定数据到Python?usecols报错求解

解决pandas读取Excel时列选择与行过滤的问题

你的代码报错是因为usecols参数只能用来指定要读取的列,不能在里面写行过滤条件。你写的'[Código Artículo]'==32和'[Código Rubro]'==2会返回布尔值,把布尔值混在列名字符串列表里,不符合usecols的要求(它只接受全字符串、全整数的列表,或者可调用函数),所以触发了ValueError。

下面是两种可行的解决方法:

方法一:先读指定列,再过滤行(适合中小数据量)

先读取需要的4列数据,再用布尔索引筛选符合条件的行,步骤清晰易维护:

import pandas as pd

# 读取目标4列
df = pd.read_excel(
    'BD_completa.xlsx',
    sheet_name='Hoja1',
    usecols=['[Fecha Orden Compra]', 'precio_del_bien', '[Código Artículo]', '[Código Rubro]']
)

# 过滤出满足两个条件的行
filtered_df = df[(df['[Código Artículo]'] == 32) & (df['[Código Rubro]'] == 2)]

方法二:分块读取并过滤(适合超大Excel文件)

如果Excel文件特别大,一次性读取会占用过多内存,可以分块读取并逐块过滤,最后合并结果:

import pandas as pd

filtered_chunks = []
# 按10000行一块读取指定列
for chunk in pd.read_excel(
    'BD_completa.xlsx',
    sheet_name='Hoja1',
    usecols=['[Fecha Orden Compra]', 'precio_del_bien', '[Código Artículo]', '[Código Rubro]'],
    chunksize=10000
):
    # 过滤当前块的行
    chunk_filtered = chunk[(chunk['[Código Artículo]'] == 32) & (chunk['[Código Rubro]'] == 2)]
    filtered_chunks.append(chunk_filtered)

# 合并所有过滤后的块
filtered_df = pd.concat(filtered_chunks, ignore_index=True)

内容的提问来源于stack exchange,提问作者Suirebil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 16:35:24