Выборка значений в pandas при условии равенства других значений в строке

Есть к примеру датафрейм:

S A B C
Q A B D
R Z V H
Y I H F
U A B M

Как выбрать из него значения С, D, M при условии, что в 2 и 3 столбцах одинаковые значения A и B?

Гуглил, искал, но так ничего не нашел подходящего.


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

Автор решения: D.Vinogradov
df = pd.DataFrame({'col1': list('SQRYI'), 'col2': list('AAZIA'), 'col3': list('BBVHB'), 'col4': list('CDHFM')})


print(df[(df.col2 == 'A') & (df.col3 == 'B')].col4)

>>> 

0    C
1    D
4    M
Name: col4, dtype: object

UPD

print(df[df[['col2', 'col3']].duplicated(keep=False) == True])

>>>
  col1 col2 col3 col4
0    S    A    B    C
1    Q    A    B    D
4    I    A    B    M
→ Ссылка
Автор решения: MaxU - stop genocide of UA

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

Вариант 1:

res = df.loc[df.duplicated(subset=["col2", "col3"], keep=False), "col4"]

результат:

In [140]: res
Out[140]:
0    C
1    D
4    M
Name: col4, dtype: object

In [141]: df.duplicated(subset=["col2", "col3"], keep=False)
Out[141]:
0     True
1     True
2    False
3    False
4     True
dtype: bool

Вариант 2:

In [145]: df.groupby(["col2", "col3"]).filter(lambda x: len(x) > 1)["col4"]
Out[145]:
0    C
1    D
4    M
Name: col4, dtype: object
→ Ссылка