我对python很新,但是,我必须完成一些任务,现在我正在努力解决问题。当表A中的某个其他参数对应于列表B中的值时,我尝试获取表A中元素的索引。表A还包含一列"index"
,其中所有元素都从0开始计算直至最后。此外,tableA.parameter1
和listB中的值只能重合一次,多次匹配是不可能的。因此,为了得到必要的索引,我使用了一行
t=tableA.index[tableA.parameter1==listB[numberObservation]]
但是,我得到的结果是:
t Int64Index([2], dtype='int64')
如果我以这种格式Int64Index使用变量t,它不适合我必须使用的其他代码。实际上,我只需要2作为整数,没有所有这些多余的休息。
有人可以帮助我规避我的问题吗?我完全绝望,对任何帮助都会感激不尽。
答案 0 :(得分:1)
尝试.tolist()
t=tableA.index[tableA.parameter1==listB[numberObservation]].tolist()
这应该返回
t = [2]
列表“没有所有多余的休息”:)
答案 1 :(得分:0)
给你Int64Index
的包裹是什么?这看起来很模糊numpy
- ish,但是numpy
数组定义__index__
所以整数值的单个元素数组将无缝地作为序列查找的索引运行。
无论如何,假设t
应该只是一个值,并且它本身就是一个序列类型,你可以这样做:
t, = tableA.index[tableA.parameter1==listB[numberObservation]]
该尾随逗号将该行从直接赋值更改为可迭代解包;它希望右侧产生一个只有一个值的迭代,并将一个值解压缩到t
。如果可迭代的值为0或2+,则您将获得ValueError
。