首页 > 解决方案 > 如何确定数据框列是否包含特定列表,与其顺序无关?

问题描述

我有这个数据框:

df = pd.DataFrame()
df['Col1'] = [['B'],['A','D','B'],['D','C']]
df['Col2'] = [1,2,4]
df

      Col1  Col2
0      [B]   1
1  [A,D,B]   2
2    [D,C]   4

我想知道 Col1 是否包含列表 [B,A,D],而不关心列表的顺序(列内的列表作为要检查的列表)。因此,我想在这里得到一个真实的答案。

我该怎么办?

谢谢

标签: pythonpandas

解决方案


如果值不重复,您可以比较sets:

L = ['B','A','D']
print (df['Col1'].map(set).eq(set(L)))
0    False
1     True
2    False
Name: Col1, dtype: bool

如果想要标量输出-True或测试列中False是否至少有一个:TrueSeries.any

print (df['Col1'].map(set).eq(set(['B','A','D'])).any())
True

推荐阅读