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

使用ibis==9.4.0按列索引选列遇AttributeError问题求助

问题:Ibis 9.4.0中如何通过数字索引选择多列?

我参考Ibis官方文档示例尝试通过列索引选择多列,代码如下:

import ibis
import ibis.selectors as s
spotify = ibis.duckdb.connect()
spotify.read_csv("hf://datasets/maharshipandya/spotify-tracks-dataset/dataset.csv", table_name = "tracks")
tracks = spotify.table("tracks")
tracks.select(s.index[1:4])

运行时出现错误:AttributeError: module 'ibis.selectors' has no attribute 'index',使用的版本为ibis==9.4.0,请问如何正确通过数字索引选择多列?


解决方案

在Ibis 9.4.0版本中,s.index选择器尚未推出,要实现通过数字索引选多列,可采用以下两种兼容方法:

方法一:列名列表切片

先获取表的完整列名列表,再通过Python切片语法选取目标列:

import ibis
spotify = ibis.duckdb.connect()
spotify.read_csv("hf://datasets/maharshipandya/spotify-tracks-dataset/dataset.csv", table_name = "tracks")
tracks = spotify.table("tracks")
# 选取索引1到4的列(左闭右开,对应第2至第4列)
selected_cols = tracks.columns[1:4]
result = tracks.select(selected_cols)

方法二:利用s.c选择器结合位置判断

通过ibis.selectors.c配合列的position()属性筛选指定位置的列:

import ibis
import ibis.selectors as s
spotify = ibis.duckdb.connect()
spotify.read_csv("hf://datasets/maharshipandya/spotify-tracks-dataset/dataset.csv", table_name = "tracks")
tracks = spotify.table("tracks")
# 选择位置在1到3之间的列(position从0开始计数)
result = tracks.select(s.c[s.c.position().between(1, 3)])

注:s.index是Ibis 10.x及以上版本新增的选择器,9.4.0版本不支持该语法,因此需要使用上述替代方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 08:50:00