例如,假设一个简单的数据帧
A B
0 1 0.810743
1 2 0.595866
2 3 0.154888
3 4 0.472721
4 5 0.894525
5 6 0.978174
6 7 0.859449
7 8 0.541247
8 9 0.232302
9 10 0.276566
给定条件,如何检索行的索引值?
例如:
dfb = df[df['A']==5].index.values.astype(int)
返回[4]
,但我只想得到4
。这会在代码的后面给我带来麻烦。
基于某些条件,我希望记录满足该条件的索引,然后选择其中的行。
我试过了
dfb = df[df['A']==5].index.values.astype(int)
dfbb = df[df['A']==8].index.values.astype(int)
df.loc[dfb:dfbb,'B']
为了得到想要的输出
A B
4 5 0.894525
5 6 0.978174
6 7 0.859449
但是我得到TypeError: '[4]' is an invalid key
要回答关于如何将索引作为所需选择的整数的原始问题,请执行以下操作:
想要包含
A == 5
的行和所有到但不包括A == 8
的行的性质意味着我们最终将使用iloc
(loc
包括切片的两端)。为了得到索引标签,我们使用
idxmax
。这将返回最大值的第一个位置。我在一个布尔序列上运行这个函数,其中A == 5
(然后当A == 8
)返回第一次发生A == 5
时的索引值(对于A == 8
也是这样)。然后我使用
searchsorted
来找到索引标签(我在上面找到的)出现的顺序位置。这就是我在iloc
中使用的。numpy
您可以通过使用底层的numpy对象(类似的numpy函数)进一步增强这一点。我把它包装成一个方便的函数。
计时
更简单的方法是添加
[0]
-使用一个元素选择列表的第一个值:但如果可能,某些值不匹配,则会引发错误,因为第一个值不存在。
如果值不匹配,则将
next
与iter
一起用于获取默认参数:那么它似乎需要减法
1
:使用^{} 或^{} 的另一个解决方案:
相关问题 更多 >
编程相关推荐