pandas как вывести номера всех строк таблицы, в которых содержится заданное значение?
Есть таблица с неструктурированными данными. Нужно вывести номера всех строк, которые содержат значения "male". При попытке использовать get_loc выдает ошибку
| 1 | 2 | 3 | 4 | |
|---|---|---|---|---|
| 0 | Maria | female | Cors | 34 |
| 1 | 18 | Sally | female | Max |
| 2 | Tramp | 26 | Alex | male |
| 3 | male | Rob | Smith | |
| 4 | Max | 30 | male |
import pandas as pd
df = pd.DataFrame(
{
"1": ["Maria", 18, "Tramp", "male", "Max"],
"2": ["female", "Sally", 26, "Rob", 30],
"3": ["Cors", "female", "Alex", "Smith", "male"],
"4": [34, "Max", "male", None, None],
}
)
index = df.index.get_loc('male')
print(index)
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Ну, примерно так:
print(df.loc[(df == 'male').any(axis=1)].index.values)
Вывод:
[2 3 4]
Порядок действий:
df == 'male'- определяем, в каких ячейках есть такие значения.any(axis=1)- определяем, в каких строках есть хотя бы одно выполненное условиеdf.loc[...]- выбираем из датафрейма только такие строки с выполненным условием.index.values- берём индекс, представляем его в виде массива чисел
А то, что вы пытались использовать df.index.get_loc('male') - это поиск в индексе датафрейма. А в индексе у вас числовые значения от 0 до 4, там нет никакого male.