Python 检查列中的值是否是另一个数组的超集

Python 检查列中的值是否是另一个数组的超集,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我以这些数据为例。我需要检查哪些a值具有所有对应的b值。例如,其中a具有所有[1,2]对应的b值 对于这个例子,我想返回一个列表 a 0 A 1 C 或 首先,我认为我应该为每个a生成一个b值列表 假设这是正确的第一步,我下一步该怎么做 我非常感谢只使用pandas提供的工具的解决方案,这些工具与lambda功能一起使用: df1.loc[df1.b_list.map(lambda x: set(x).issuperset(L)), 'a'] print (s) 0 A

我以这些数据为例。我需要检查哪些a值具有所有对应的b值。例如,其中a具有所有[1,2]对应的b值

对于这个例子,我想返回一个列表

    a
0   A
1   C

首先,我认为我应该为每个a生成一个b值列表

假设这是正确的第一步,我下一步该怎么做

我非常感谢只使用pandas提供的工具的解决方案,这些工具与lambda功能一起使用:

df1.loc[df1.b_list.map(lambda x: set(x).issuperset(L)), 'a']
print (s)
0    A
2    C
Name: a, dtype: object
列表的Anf:

a = df1.loc[df1.b_list.map(lambda x: set(x).issuperset(L)), 'a'].tolist()
print (a)
['A', 'C']
如果使用issubset解决方案不含lambda:

s = df1.loc[df1.b_list.map(set(L).issubset), 'a']
print (s)
0    A
2    C
Name: a, dtype: object

a = df1.loc[df1.b_list.map(set(L).issubset), 'a'].tolist()
print (a)
['A', 'C']
与lambda函数一起使用:

df1.loc[df1.b_list.map(lambda x: set(x).issuperset(L)), 'a']
print (s)
0    A
2    C
Name: a, dtype: object
列表的Anf:

a = df1.loc[df1.b_list.map(lambda x: set(x).issuperset(L)), 'a'].tolist()
print (a)
['A', 'C']
如果使用issubset解决方案不含lambda:

s = df1.loc[df1.b_list.map(set(L).issubset), 'a']
print (s)
0    A
2    C
Name: a, dtype: object

a = df1.loc[df1.b_list.map(set(L).issubset), 'a'].tolist()
print (a)
['A', 'C']
使用数据透视表:

df.pivot('a','b','a').dropna(subset=[1,2]).index
或使用groupby:

df.groupby('a').b.apply(lambda x: set(x.tolist()).issuperset([1,2]))
或者,如果您需要在列表中列出:

(
    df.groupby('a')
    .b.apply(lambda x: set(x.tolist()).issuperset([1,2])).loc[lambda x: x]
    .index.tolist()
)
使用数据透视表:

df.pivot('a','b','a').dropna(subset=[1,2]).index
或使用groupby:

df.groupby('a').b.apply(lambda x: set(x.tolist()).issuperset([1,2]))
或者,如果您需要在列表中列出:

(
    df.groupby('a')
    .b.apply(lambda x: set(x.tolist()).issuperset([1,2])).loc[lambda x: x]
    .index.tolist()
)