如何查找和计算两个不同数据帧之间的重复行数? [关闭]
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_x
和c_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'])
【讨论】:
以上是关于如何查找和计算两个不同数据帧之间的重复行数? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章