python - 使用 pandas 计算包含列表中所有值的 DataFrame 行数
问题描述
我想计算包含列表中所有值的DataFrame 行数。
可以说我有:
abc = pd.DataFrame(np.random.randint(1,100,(100, 10)))
我有以下列表(具有唯一值):
x = [10, 32, 8]
使用熊猫检查行是否包含所有给定值的最简单方法是什么?我可能可以将每一行转换为列表,然后将新列表的内容与给定列表进行比较,如果比较成功,则增加我的计数器,但我想在这种情况下这不是最快的方法......
解决方案
有必要屏蔽重复,然后我们可以使用DataFrame.isin
和DataFrame.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()
对掩码重复项的引用:
DataFrame.ne
,df1.ne(df2)
类似于df1 != df2
推荐阅读
- python-3.x - 即使对象是 None 类型也返回属性
- python - Django查询列表到模板 - 按类别显示项目
- angular - 如何覆盖 Angular 组件实现的单个元素(特别是 CdkStepper)?
- reactjs - 使用身份验证的 Office UI Outlook 插件不稳定
- html - 结合两个 RewriteRules 覆盖第一个
- graph - Weaviate 搜索图与。IBM Graph 的 GA
- python - 有什么方法可以放大 matplotlib 图而不用 Python 中的所有数据点相乘?
- c# - 在 Web Api Controller 中返回后获取状态码
- c# - 将 XML 元素名称和 XML 属性设置为类属性
- flutter - 颤动如何在单击时更改按钮的颜色