Как эффективно получить доступ к первому и последнему индексу вхождения, который соответствует условию в Пандах - PullRequest
0 голосов
/ 24 сентября 2019

Идея состоит в том, чтобы получить доступ к первому и последнему индексу вхождения, который соответствует условию в Пандах.

Следующий код может достичь указанной цели.Но мне просто интересно, есть ли более эффективный способ достижения того же результата

Из примера и кода ожидается получение второй и пятой строки в качестве конечного результата.

df = pd.DataFrame({'A':[1,2,3,4,5,10,2],
               'B' :[1,2,3,4,5,110,2]})

IndexGreaterThan=df[df['A'].gt(2)].index.tolist() 

Voltage_FirstAboveThrshold=df.at[IndexGreaterThan[0],'A']
Time_FirstAboveThrshold=df.at[IndexGreaterThan[0],'B']

Voltage_LastAboveThrshold=df.at[IndexGreaterThan[-1],'A']
Time_LastAboveThrshold=df.at[IndexGreaterThan[-1],'B']

Тогда

print(Voltage_FirstAboveThrshold,Time_FirstAboveThrshold)
print(Voltage_LastAboveThrshold,Time_LastAboveThrshold)

Вывод

3 3
10 110

Цените любые предложения

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

Попробуйте что-то вроде этого:

df[df.A.gt(2)].iloc[[0,-1]]

Подробности:

  • df[df.A.gt(2)] выбирает строки с A> 2 .
  • .iloc[[0,-1]] выбирает первый и последний ряд (из выбранного выше).
1 голос
/ 24 сентября 2019

Использование

  • .iloc - Индексирование на основе чисто целочисленного местоположения для выбора по позиции.

import pandas as pd
df = pd.DataFrame({'A':[1,2,3,4,5,10,2],
               'B' :[1,2,3,4,5,110,2]})

df = df[df['A'].gt(2)]
df2 = df.iloc[[0, -1]]
print(df2)

    A    B
2   3    3
5  10  110
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...