drop_duplicates()无法工作,因为它找不到任何重复项?

2024-05-29 03:54:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我上周开始和熊猫一起工作,所以我可能会错过一些东西,但这是我的问题。当我在网上商店上抓取产品评论时,我获得了写评论的用户的ID。因为我想有更多的数据,所以我扩展了一个数据框架来收集这些用户编写的其他产品的所有其他评论。因此,从逻辑上讲,当我扩展数据框架时,我应该找到两个相同的用户ID,review\u text和product\u ID(用户编写评论的产品)。因此,对于给定的用户,我的数据帧基本上如下所示:

^{tb1}$

这里,我有两个副本,第5行和第472行。第472行有一个NaN,因为在扩展评论和删除此评论时,我无法删除其他信息(例如此产品的评论数量)

由于它可能是尾随空格,或者可能在两个实例之间修改了评论(虽然可能性很小,但仍然如此),我排除了根据评论文本检查重复项,而是决定删除具有相同产品id/用户id对的行

df =df.drop_duplicates(subset=["product_id", "user_id"], keep="first")

这里的问题是熊猫没有检测到任何复制品!我通过以下方式进行了验证:

df.duplicated(subset=["product_id", "user_id"]) 

所有返回的都是False,这意味着没有找到重复的

我尝试过的: 我检查了问题是否与列类型有关,然后

print(df.dtypes)

它告诉我产品id和用户id都是对象类型。将它们转换为int或str不会改变结果

所以我在这里,不知道这里有什么问题。这是肯定的,因为有复制品,但为什么熊猫没有检测到呢?我肯定这是新手犯的错误,但我在这里有点迷路了。谢谢你的帮助


Tags: 数据用户框架id类型df产品评论
1条回答
网友
1楼 · 发布于 2024-05-29 03:54:35

好吧,所以我解决了这个问题,即使我不确定我能解释它。 我在问题中写道,我试图将列转换为int,但显然我第一次写错了。因此,我所做的是:

df2["product_id"] = pd.to_numeric(df2["product_id"])
df2["user_id"] = pd.to_numeric(df2["user_id"])

成功了

相关问题 更多 >

    热门问题