[英]Find a column1 value that has transacted in all distinct column2 values
您可以先通過crosstab
重塑值,然后通過boolean indexing
過濾所有索引值(如果不是0
):
df1 = pd.crosstab(df['Fruitsellers'], df['Fruits'])
out = df1.index[df1.ne(0).all(axis=1)].tolist()
print (out)
['A']
>>> df Fruitsellers Fruits 0 A Guava 1 A Mango 2 B Apple 3 C Banana 4 D Pineapple 5 A Orange 6 B Orange 7 C Pineapple 8 A Apple 9 A Banana 10 A Pineapple >>> filetr_func = lambda x:sorted(x.Fruits.unique()) == sorted(df.Fruits.unique()) >>> (df ... .groupby("Fruitsellers") ... .apply(filetr_func) ... .where(lambda x:x==True) ... .dropna() ... .index ... .to_list() ... ) ['A']
嘗試:
>>> df.drop_duplicates().value_counts('Fruitsellers').eq(df['Fruits'].nunique()) \
.loc[lambda x: x].index.tolist()
# Output:
['A']
假設在Fruits
列中至少存在一個實例。
如果您確定, drop_duplicates
不是強制性的,您沒有多個相同的 (Fruitsellers, Fruits) 行,例如 2 x ('A', 'Mango')。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.