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

使用isin过滤Pandas DataFrame后数值不符问题求助

问题分析与解答

核心错误:混淆了「总行数」和「唯一用户数」的概念

你的计算逻辑完全不对,users['user_id'].size - interactions['user_id'].unique().size这个减法没有任何实际意义,不能用来验证过滤后的行数:

  • users['user_id'].size是原始users的总行数(包含同一个user_id的重复行)
  • interactions['user_id'].unique().size是interactions里有过交互的唯一用户数量
    这两个数值的维度完全不同,相减的结果和过滤后的行数没有关联。

你的过滤代码本身是正确的

users = users[users.user_id.isin(interactions['user_id'])]这段代码的逻辑没问题:它会保留users中所有user_id出现在interactions里的行(不管这个user_id在interactions里出现多少次,也不管users里这个user_id有多少重复行)。

正确的验证方式

要验证过滤结果是否正确,应该计算原始users中被排除的行数,再用总行数减去这个值:

# 计算被排除的行数(user_id不在interactions里的行)
excluded_rows = users[~users.user_id.isin(interactions['user_id'])].shape[0]
# 验证:原始总行数 - 被排除行数 应该等于过滤后的行数
print(818683 - excluded_rows == 566772)

举个简单例子帮你理解

假设:

  • 原始users有5行:user_id为[1,1,2,3,3](总行数5)
  • interactions的user_id为[1,3](唯一用户数2)
  • 过滤后的users是[1,1,3,3](共4行)
    如果按你的计算方式:5 - 2 = 3,显然和实际过滤后的4行不符——这就是因为你把「总行数」和「唯一用户数」混为一谈了。

内容的提问来源于stack exchange,提问作者Егор Трифонов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 11:27:17