当pandas中没有公共列名时,我们应该如何组合多个数据集而不在行或列中重复

2024-07-03 02:07:54 发布

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

我是数据分析的初学者,我想把3个表合并成一个没有重复行或列的表。第3列中的3个表中的一列的值都是相似的。 我有3个表'listings''users''info'。“表”中的“用户ID”和“用户ID”列中的用户ID不同。在

我尝试了以下方法,但还是得到了重复值或NaN值。在

pd.merge(listings,users,left_on='user_id',right_on='id').merge(info,left_on='user_id',right_on='id_number')

对于这种情况,我看到重复的值,而且结果中的总行数非常少。在

我试了一下海螺:

^{pr2}$

但我得到了以下错误:

TypeError: cannot concatenate object of type ""; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid


Tags: 方法用户rightinfoidonmergenan
1条回答
网友
1楼 · 发布于 2024-07-03 02:07:54

当您使用pd.merge而不提供how参数时,您正在对这两者执行inner联接桌子。还有由于inner联接是一种数学intersection,因此您应该看到小于或等于较小表中的行数。在

当你这么做的时候

pd.merge(listings,users,left_on='user_id',right_on='id').merge(info,left_on='user_id',right_on='id_number')

你一定有duplicate columns。两列id和{}将出现在第一次合并的结果中,当您执行第二次合并时,两列user_id和{}将出现。这些都是同一列的副本。在

如果这三个表都有相同的ID,您将不会看到重复的列。我认为你应该删除重复的列。我相信,如果您将第一次合并的结果保存在一个数据帧中,然后使用info表执行最后的合并,您就可以轻松地找出重复列的来源。在

相关问题 更多 >