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
.