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

Polars读取无表头CSV自定义列名报错:List对象不可调用

解决Polars scan_csv自定义无表头CSV列名报错问题

问题原因

Polars的scan_csv方法中,with_column_names参数要求传入可调用对象(函数),而非直接传入列名列表。该函数会接收Polars自动生成的默认列名列表作为参数,需要返回自定义的列名列表。直接传列表会被Python当作可调用对象执行,因此触发“List object is not callable”错误。

正确解决方案

方法1:使用lambda函数快速设置

直接用lambda忽略默认列名参数,返回自定义列名列表:

import polars as pl
header = ["col1", "col2"]
df = pl.scan_csv(file_path, has_header=False, with_column_names=lambda _: header)

方法2:定义独立函数设置

如果需要更复杂的逻辑,可以定义专门的函数(注意传入函数名,不要加括号调用):

import polars as pl

def get_custom_columns(default_cols):
    # 可根据默认列名做自定义逻辑,比如映射、扩展等
    return ["col1", "col2"]

df = pl.scan_csv(file_path, has_header=False, with_column_names=get_custom_columns)

对之前尝试的错误说明

  • 直接传header/header[:]/list(header):这些都是传递列表,不符合with_column_names对可调用对象的要求,因此报错。
  • 使用def_fun(header):这是调用函数,返回的是列表,依然不是可调用对象,所以同样报错。正确做法是直接传函数名(如def_fun),让Polars内部去调用它。
  • 使用list[header]:这是语法错误(列表不能用另一个列表作为索引),实际并未生效,因此Polars仍使用默认列名。

内容的提问来源于stack exchange,提问作者Muhammad D Vikar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:25:23