Выборка значений в 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