python pandas как получить индекс первого не подходящего под условия значения

Рейтинг: 2Ответов: 2Опубликовано: 15.08.2023
import pandas as pd

# assign data
df_new = pd.DataFrame({'value_1': [4, 1, 7, 2, 3, 0, 10, 1, 9],
                       'value_2': [6, 5, 4, 6, 7, 3, 5, 2, 3]})
#                                        ^--> индекс данного первого значения не удовлетворяющего условию
print(df_new)

# фильтруем данные по колонке 'value_2'
dFilter = df_new[df_new.value_2 > 4]
dFilter

В моем примере это будет значение '4' в столбце df_new.value_2 c индексом = 2 !

Ответы

▲ 3Принят
idx = df_new["value_2"].le(4).idxmax()

сначала получаете булеву серию, где индексы со значениями, удовлетворяющими условию, будут True. Остальные, соответственно - False. idxmax выведет индекс первого максимального значения (True).

▲ 1

Для того чтобы получить индекс первого значения в столбце value_2 которое не удовлетворяет условию (value_2 > 4), вы можете воспользоваться методом idxmax(). Этот метод вернет индекс первого максимального значения в серии, соответствующего заданному условию. Вот как это можно сделать:

import pandas as pd

# assign data
df_new = pd.DataFrame({'value_1': [4, 1, 7, 2, 3, 0, 10, 1, 9],
                       'value_2': [6, 5, 4, 6, 7, 3, 5, 2, 3]})

# фильтруем данные по колонке 'value_2'
dFilter = df_new[df_new.value_2 > 4]

# Получаем индекс первого не удовлетворяющего условию значения
index_first_non_matching = dFilter.index[0]
print("Индекс первого не удовлетворяющего условию значения:", index_first_non_matching)

В этом коде, dFilter.index[0] вернет индекс первой строки в датафрейме dFilter, которая не удовлетворяет условию value_2 > 4, так как строки в Pandas датафреймах индексируются с нуля. Надеюсь получится у вас