Доступ.
Ячейка .loc[1, 'col']
Cтолбец .loc[:, 'col']
Несколько столбцов .loc[:, ['col1', 'col2']]
Cтрока .loc[1]
Несколько строк подряд: .loc[3:8]
Логическая индексация по условию.
Строки целиком: df.loc[df.loc[:,'col'] == 'X']
или:
df[df['col'] == 'X']
Только столбец col2 со строками, удовлетворяющими условию в col1:
df[df['col1'] == 'X'] ['col2']
Булев массив как индекс датафрейма:
print(df[df['col1'] == 'smth'])
С другими операторами сравнения:
print(df[df['col1'] < 5])
Сравнение со значением другого столбца:
df[df['col1'] > df['col2']]
Поиск конкретных значений:
df[df['col1'].isin(('smth', 'smth2'))]
Логические операции (вариант записи (б) - исключение, так записанный код работает, например в Pandas):
1. И
a) a and b
б) (a) & (b)
(df['col1']) & (df['col2'] > 5)
2. ИЛИ
а)a or b
б) (a) | (b)
(df['col1']) | (df['col2'] < 5)
3. НЕ
а) a not b
б) (a) ~ (b)
&, | и др, используют и как побитовые операторы, если условие записано без скобок https://data-scientists.ru/node/29
Еще примеры
print(df[(df['col1'] == True ) &~ (df['col2'].isin(('smth', 'smth')))])