You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确计算Pandas DataFrame中非互斥数据的长度?

如何统计DataFrame中非互斥数据的总长度?

我来帮你搞定这个问题!你现在的代码返回整个DataFrame的长度6,问题出在isin()的参数使用上,咱们一步步理清楚:

错误原因分析

你写的代码是:

len(df1['ID'].isin(df2['ID'] == False))

这里的df2['ID'] == False是在判断df2中的每个ID字符串是否等于布尔值False,这完全不是你想要的“判断df1的ID是否存在于df2中”的逻辑。isin()拿到的是一堆错误的布尔值,最后用len()去计算这个布尔Series的长度,自然得到的是df1的总行数6。

正确的解决方法

我们需要先让isin()接收df2的ID列,判断df1的每个ID是否在df2里,再取反得到“不在df2里的ID”的布尔Series,最后统计这些True的数量或者筛选后取长度。

方法一:筛选后取长度

# 筛选出df1中ID不在df2里的行,再求长度
len(df1[~df1['ID'].isin(df2['ID'])])

方法二:统计布尔值的数量

因为布尔值中True等价于1,False等价于0,所以可以直接用sum()统计True的个数:

# 取反后统计True的数量
(~df1['ID'].isin(df2['ID'])).sum()

补充说明

按照你给出的df1和df2数据,df1中不在df2里的ID是7878aa、6565dd、4158hf,总共3个,所以正确结果应该是3,你写的期望输出2可能是笔误哦~

内容的提问来源于stack exchange,提问作者Mick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 15:22:56