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

如何将Int64Index转换为普通列表并访问其中元素?

问题描述

我有一个嵌套列表,但其中的元素是Int64Index类型,无法直接访问单个值。想请教有没有办法访问这些值,或者将其转换为普通列表?

原代码如下:

data_exp = pd.read_csv(path+'/exp.csv')

exp_list=[]

for i in range (1,n+1):
    check=data_exp.apply(lambda x: True if x['Set No.']==i else False, axis=1)
    temp=[data_exp[check==True].index+1]
    exp_list.append(temp)
del temp

display(exp_list)

该循环用于按条件筛选数据,输出内容符合预期,但格式存在问题。输出结果如下:

[[Int64Index([8, 11, 17, 20, 21, 27, 29, 36, 37, 38], dtype='int64')],
[Int64Index([1, 3, 7, 10, 14, 31, 33, 34, 35], dtype='int64')],
[Int64Index([5, 9, 12, 15, 19, 23, 25, 26, 28, 32], dtype='int64')],
[Int64Index([2, 4, 6, 13, 16, 18, 22, 24, 30, 39, 40], dtype='int64')]]
解决方案

直接访问Int64Index的单个值

Int64Index本身支持下标索引,和普通列表用法一致,你可以直接通过多层下标访问单个值:

# 获取第一个子列表中Int64Index的第一个元素
first_val = exp_list[0][0][0]
# 获取第二个子列表中Int64Index的第三个元素
third_val = exp_list[1][0][2]

转换为普通列表

使用Int64Index的*.tolist()*方法可以直接将其转为普通Python列表,修改你的循环代码即可:

data_exp = pd.read_csv(path+'/exp.csv')

exp_list = []

for i in range(1, n+1):
    # 简化条件判断,无需apply
    check = data_exp['Set No.'] == i
    # 将索引+1后转成普通列表
    temp = (data_exp[check].index + 1).tolist()
    # 保持原嵌套结构就append([temp]),如果不需要双层嵌套直接append(temp)
    exp_list.append([temp])

display(exp_list)

更高效的分组实现

不用循环遍历,用pandas的groupby可以更高效地完成分组提取索引的操作,代码更简洁:

data_exp = pd.read_csv(path+'/exp.csv')
# 按Set No.分组,提取每组索引+1并转为列表
exp_list = [ (group.index + 1).tolist() for _, group in data_exp.groupby('Set No.') ]
# 若需要保持原双层嵌套结构,改为:
# exp_list = [ [ (group.index + 1).tolist() ] for _, group in data_exp.groupby('Set No.') ]

display(exp_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:26:28