如何在系列或列中找到元素(例如“True”)的索引?
例如,我有一个列,我想在其中标识事件发生的第一个实例。所以我写成
Variable = df["Force"] < event
然后这会创建一个 bool 数据系列,其中它为 False,直到第一个实例变为 True。那么如何找到数据点的索引呢?
有没有更好的办法?
最佳答案
使用idxmax
找到最大值的第一个实例。在这种情况下,True
是最大值。
df['Force'].lt(event).idxmax()
考虑示例 df
:
df = pd.DataFrame(dict(Force=[5, 4, 3, 2, 1]), list('abcde'))
df
Force
a 5
b 4
c 3
d 2
e 1
Force
小于 3
的第一个实例在索引 'd'
处。
df['Force'].lt(3).idxmax()
'd'
请注意,如果 Force
的值都不小于 3,则最大值将为 False
,第一个实例将是第一个。
同时考虑替代方案 argmax
df.Force.lt(3).values.argmax()
3
它返回第一个最大值实例的位置。然后,您可以使用它来查找相应的 index
值:
df.index[df.Force.lt(3).values.argmax()]
'd'
此外,在未来,argmax
将是一个 Series 方法。
关于python - 从系列/列中查找第一个元素的索引(例如 "True"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48634271/