【发布时间】:2017-09-09 16:55:03
【问题描述】:
我试图在两个具有相同列但行数不同的 pandas DataFrames 中找到重叠行:
df1.shape
(187399, 784)
df2.shape
(9790, 784)
pd.merge() 操作后
common_cols = df1.columns.tolist()
df3 = pd.merge(df1, df2, on=common_cols, how="inner")
我得到的结果大于 df1 和 df2
df3.shape
(283979, 784)
这怎么可能,我做错了什么?
我有两个 dfs,都有 784 列名为 [0,1,2,3...783] 并且每个 df 中的行数不同。我只想在这些 dfs 中找到相同行的交集。这意味着如果df1 和df2 中存在一行,则必须转到df3
在上一步中,我使用 pd.drop_duplicates() 删除了每个 df 中的重复项
在标题“问题 5”之后使用代码链接到 jupyter 笔记本 https://github.com/kuatroka/udacity_deep_learning/blob/master/1_notmnist-Copy1.ipynb
【问题讨论】:
-
如果在没有指定
on=common_cols的情况下合并会发生什么? -
检查您要合并的列的数据类型以确保它们完全相同
-
正在进行交叉连接
-
听起来您仍然有重复的键。你到底是怎么打电话给
drop_duplicates()的? -
@ASGM - 结果与它相同。 @muon - 所有数据类型都是相同的。 @ajcr - 我从 numpy ndarray 创建了 pd.DataFrame 并通过
df1 = pd.DataFrame(numpy_ndarray1).drop_duplicates()删除了重复项
标签: python pandas numpy merge duplicates