如何解决熊猫合并 |内连接缺失值,外连接额外值
试图在相同的 ID 列上合并两个数据帧,相同的名称和所有值都存在于两个 DF 中,相同的数据类型。但是,对 ID 列进行内部连接只会产生大约 78000 行中的 12000 行:
DataFrame_1
0 itemID 78030 non-null int32
1 title 78030 non-null object
2 cluster 78030 non-null object
+
DataFrame_2
0 itemID 78030 non-null int32
1 title 78030 non-null object
2 cluster 78030 non-null object
MergeDf = pd.merge(DF1,DF2,how='inner',on='itemID')
0 itemID 12753 non-null object
1 title_x 12753 non-null object
2 title_y 12753 non-null object
3 cluster_y 12753 non-null object
4 cluster_y 12753 non-null object
这些 ID 真的存在吗?
DF1['itemID'].isin(DF2['itemID']).value_counts())
True 78030
False 0
12753 行似乎是内连接工作并且 ID 值似乎匹配的行。
MergeDf = pd.merge(DF1,how='left',on='itemID')
0 itemID 78030 non-null object
1 title_x 78030 non-null object
2 cluster_x 78030 non-null object
3 title_y 12753 non-null object
4 Cluster_y 12753 non-null object
从 Y 列仅接受相同的 12753。
MergeDf = pd.merge(DF1,how='outer',on='itemID')
0 itemID 143307 non-null float64
1 title_x 78030 non-null object
2 title_y 78030 non-null object
3 cluster_y 78030 non-null object
4 cluster_y 78030 non-null object
现在有 143307 行,78030 行带有标题/簇 X 值,Y 的数量相同,其中一部分是 12753 行,两者都有值并包含在两个集合中。
78030 - 12753 = 143307,所以 12753 是 DataFrame 的一部分,它以某种方式共享并且查看 csv 输出同时包含 X 和 Y 列。
这可能是什么原因,我需要在一个 DataFrame 中包含 78030 个标题/集群 X/Y。
解决方法
使用 pandas 合并,在外部合并将保留两个数据帧中的所有列和行。如您所见,合并 ID 仍会包含重复项。
通过我刚刚合并的数据框,我不得不合并多个列。
所以在你的例子中......
0 itemID 143307 non-null float64
1 title_x 78030 non-null object
2 title_y 78030 non-null object
3 cluster_y 78030 non-null object
4 cluster_y 78030 non-null object
您会看到 78030 显示多个 cluster_y 列值。如果您要编写类似...的内容(填写 cluster_y 列标题的标题)
MergeDf = pd.merge(DF1,DF2,how='outer',on=['itemID','cluster','(..whatever else)'])
这将在 ID 上合并,然后如果该 ID 有一些共同的集群,它会在那个上合并,依此类推。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。