Я использовал этот простой DataFrame, чтобы немного поиграть.
A B
0 123 abc
1 123 abc
2 123 def
3 456 def
4 456 def
Я хочу проверить, всегда ли значение столбца B одинаково для каждого отдельного значения в столбце A. Например, «123» в столбце A всегда должно соответствовать исключительно «abc» в столбце B.
Вот что я пробовал до сих пор:
df2 = df[['A','B']].drop_duplicates()
df[(df['A'] == df2['A']) & (df['B'] == df2['B'])].values
Но я получаю ошибку, потому что индекс DataFrames не совпадает.
Тогда я безуспешно пытался использовать список.
test=list(set(df['A']))
for l in test:
df[df.A== l].B.drop_duplicates()
В небольшом DataFrame, подобном тому, который я использовал, это легко увидеть, но как мне легко проверить его в более крупном DataFrame с, скажем, 43K записями?
EDIT
Благодаря ответам я знаю, что могу фильтровать по нескольким комбинациям, например так:
df.groupby('A').filter(lambda x: x['B'].nunique()> 1)
К сожалению, это решение возвращает
A B
0 123 abc
1 123 abc
2 123 def
Мне нужен только вывод, как
A B
0 123 def
Чтобы найти те случаи, когда «123» не исключительно соответствует «abc».
Есть ли простой способ сделать это?