如何查找和计算两个不同数据帧之间的重复行数? [关闭]

Posted

技术标签:

【中文标题】如何查找和计算两个不同数据帧之间的重复行数? [关闭]【英文标题】:How to find and calculate the number of duplicated rows between two different dataframe? [closed] 【发布时间】:2021-08-11 06:26:09 【问题描述】:

我如何知道不同数据帧之间重复的行数?并创建新列?

数据框 1:

c_x   c_y

dan    kim

lee    kim

bob    dan

bob    uni

数据框 2:

c_x   c_y    movie

kim    kim    a

lee    kim    a

kim    lee    b

dan    bob    c

bob    dan    f

bob    uni    a

uni    bob    f

我想根据两个数据框计算重复的行数。具体来说,我想计算重复行数,而不管列顺序如何。另外,我想制作新的电影专栏

我想要一个像这样的最终数据框。

df1
c_x   c_y    movie1    movie2   number

dan    kim    nan       nan       0

lee    kim     a         b        2

bob    dan     c         f        2

bob    uni     a         f        2

提前致谢。

【问题讨论】:

请通过intro tour、help center 和how to ask a good question 了解本网站的运作方式并帮助您改进当前和未来的问题,从而帮助您获得更好的答案。 “告诉我如何解决这个编码问题?”与 Stack Overflow 无关。您必须诚实地尝试解决方案,然后就您的实施提出具体问题。 Stack Overflow 无意取代现有的教程和文档。 【参考方案1】:

您可以对两个DataFrames - 列c_xc_y 进行排序,因为movies 使用DataFrame.pivot,按DataFrame.count 计算非缺失值并附加到df1

df2[['c_x','c_y']] = np.sort(df2[['c_x','c_y']], axis=1)

df2['g'] = df2.groupby(['c_x','c_y']).cumcount().add(1)

df2 = df2.pivot(index=['c_x','c_y'], columns='g', values='movie').add_prefix('movie')
df2['number'] = df2.count(axis=1)
print (df2)
g       movie1 movie2  number
c_x c_y                      
bob dan      c      f       2
    uni      a      f       2
kim kim      a    NaN       1
    lee      a      b       2

然后:

df1[['c_x','c_y']] = np.sort(df1[['c_x','c_y']], axis=1)

df = df1.join(df2, on=['c_x','c_y'])

【讨论】:

以上是关于如何查找和计算两个不同数据帧之间的重复行数? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 PySpark 中查找两个数据帧之间的变化

Python Pandas - 查找两个数据帧之间的差异

如何有效地计算数据帧的行数? [复制]

如何在不同的数据帧中选择特定时间段内的点,然后根据纬度/经度选择这两个点之间的距离

运行之间的 Spark DataFrame 行数不一致

在scala中将列从一个数据帧添加到另一个数据帧[重复]