Как получить индекс строки, где находится значение?
У меня есть массив. Я хочу получить индекс строки, в котором находится искомое значение.
| Начало | Конец | Продолжительность | Сумма |
|---|---|---|---|
| 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 шт):
Вы можете сначала преобразовать столбцы к нужному типу данных, а потом делать поиск:
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