[英]compare distinct values of two column with pandas
我用這個簡單的DataFrame來玩一下。
A B
0 123 abc
1 123 abc
2 123 def
3 456 def
4 456 def
我想檢查列B中每個不同值的列B的值是否始終相同。例如,列A中的“123”始終專門對應於列B中的“abc”。
這是我到目前為止所嘗試的:
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條目?
編輯
感謝答案,我知道我可以過濾多個這樣的組合:
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'的情況。
是否有捷徑可尋?
試試:
df.groupby('A').agg({'B': pd.Series.nunique})
要么,
df.groupby('A')['B'].nunique()
正如文本所提到的,如果B的數量超過1,那么就有多種組合。
UPDATE
要過濾具有多個計數的組合,您可以使用filter():
df.groupby('A').filter(lambda x: x['B'].nunique()> 1)
df.groupby(['A',"B"]).filter(lambda x : len(x)==1)
和輸出將是
A B
2 123 def
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.