首页 > 解决方案 > 知道数据框中的哪一行与另一行相似

问题描述

我有一个称为数据的数据框。另外,我在 dataframe group1 中有 2057 列和 197 行,我想知道哪一行与另一行相似。我做的:

group1=pd.crosstab(data.column1,data.column2)
 group1["EsDuplicado?"]=group1.duplicated(subset=group1.columns.difference(['BCP_Nombre_de_la_Matriz__c']),keep=False)

直到现在它还在工作,我添加了一个新列,其值为真(当该行与另一行相似时)或当该行不相似时为假。

我想知道哪些行是相似的并且确切地知道它的对。

到现在我的桌子是这样的:

在此处输入图像描述

但我想要这样的东西:

在此处输入图像描述

或者也许这不是必需的,如果行彼此相邻就足够了,这样我就知道哪一行是相似的。

我想要这样的东西,但在这个例子中,我只有 2 列,我有 2057 列:

在熊猫数据框中查找重复行

标签: pandasdataframe

解决方案


@cs95 对您链接到的问题的回答可以直接推广到任意数量的列。

这是一个用于测试的小示例数据集,但我将使第二个代码块通用,以便它也适用于您的 DataFrame,只要它的名称是group1.

import pandas as pd

group1 = pd.DataFrame({'column 1': [1, 1, 1, 1, 1, 1], 
                       'column 2': [2, 2, 2, 2, 2, 2], 
                       'column 3': [3, 4, 3, 5, 3, 4]})
group1
    column 1    column 2    column 3
0   1           2           3
1   1           2           4
2   1           2           3
3   1           2           5
4   1           2           3
5   1           2           4
group1['first such row'] = group1.groupby(list(group1.columns))[group1.columns[0]
                                                               ].transform('idxmin')    
group1
    column 1    column 2    column 3    first such row
0   1           2           3           0
1   1           2           4           1
2   1           2           3           0
3   1           2           5           3
4   1           2           3           0
5   1           2           4           1

推荐阅读