Python 检查列中的值是否是另一个数组的超集
我以这些数据为例。我需要检查哪些a值具有所有对应的b值。例如,其中a具有所有[1,2]对应的b值 对于这个例子,我想返回一个列表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
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()
)