Как получить индекс строки, где находится значение?

У меня есть массив. Я хочу получить индекс строки, в котором находится искомое значение.

Начало Конец Продолжительность Сумма
2020-01-01 2020-03-15 75 -961.4
2020-03-16 2020-03-16 1 0.2
2020-03-17 2020-03-29 13 -86.1
2020-03-30 2020-03-30 1 1.0
2020-03-31 2020-04-01 2 -6.8
2020-04-02 2020-10-06 188 2287.6
2020-10-07 2020-10-13 7 -18.9
2020-10-14 2020-10-18 5 4.2
2020-10-19 2020-10-21 3 -3.8
2020-10-22 2020-10-22 1 1.9
2020-10-23 2020-11-07 16 -114.3
2020-11-08 2020-11-10 3 3.5
2020-11-11 2020-12-31 51 -962.4

Я обращаюсь к таблице, чтобы вернуть значение индекса. Например хочу знать какой индекс имеет строка, где находить значение "Сумма" равное 2287.6. Оно должно мне возвращать 5.

ind = df[df['Сумма'] == 2287.6].index.values.astype(int)

Но мне возвращается просто пустой список: [].

В чем может быть проблема? Также, как можно получить значение из другой колонки, которое находится на этой же строке?


Ответы (1 шт):

Автор решения: MaxU

Вы можете сначала преобразовать столбцы к нужному типу данных, а потом делать поиск:

df["Сумма"] = pd.to_numeric(df["Сумма"], errors="coerce")
idx = df[df['Сумма'] == 2287.6].index
print(idx.to_list())
# [5]

получить значение по найденному индексу из другого столбца - возвращается объект типа pandas.Series:

In [89]: print(df.loc[idx, "Начало"])
5    2020-04-02
Name: Начало, dtype: object

чтобы вернуть скалярное значение:

In [91]: print(df.at[idx[0], "Начало"])
# 2020-04-02

PS официальная документация об индексировании и доступе к данным в Pandas

→ Ссылка