首页 > 解决方案 > 使用 pandas 计算包含列表中所有值的 DataFrame 行数

问题描述

我想计算包含列表中所有值的DataFrame 行数。

可以说我有:

abc = pd.DataFrame(np.random.randint(1,100,(100, 10)))

我有以下列表(具有唯一值):

x = [10, 32, 8]

使用熊猫检查行是否包含所有给定值的最简单方法是什么?我可能可以将每一行转换为列表,然后将新列表的内容与给定列表进行比较,如果比较成功,则增加我的计数器,但我想在这种情况下这不是最快的方法......

标签: pythonpandasdataframe

解决方案


有必要屏蔽重复,然后我们可以使用DataFrame.isinDataFrame.sum 计算每行的匹配数并检查它是否大于或等于列表的长度,DataFrame.ge因为没有重复,这就足够了。最后我们得到满足这个条件的行的总和

df=pd.DataFrame(np.sort(abc, axis=1))
df.where(df.ne(df.shift(axis=1))).isin(x).sum(axis=1).ge(len(x)).sum()

如果行中不重复:

abc.isin(x).sum(axis=1).ge(len(x)).sum()

对掩码重复项的引用:


推荐阅读