Hier sind meine Daten

Id   feature1  feature2  feature3 feature4 feature5 feature6
1           4         5         7        7        4        5
2           5         6         8        8        5        5

Was ich möchte, ist, dass doppelte Daten entfernt werden

Id   feature1  feature2  feature3 feature6
1           4         5         7        5
2           5         6         8        5

Besser, wenn auch Duplikate beschrieben werden

feature3 is same with feature4
feature2 is same with feature5

Normalerweise verwende ich Seaboarn Corplot, aber ich werde verwirrend, wenn die Funktionen mehr als 100 wachsen

import seaborn as sns
ax = sns.heatmap(df)
1
Nabih Bawazir 17 Apr. 2018 im 20:17

3 Antworten

Beste Antwort

Sie können T verwenden, dann groupby Wert, beachten Sie, dass drop_duplicates und duplicated die Paare nicht bereitstellen, was bedeutet, dass sie nur den duplizierten Wert zurückgeben (nicht duplizierte Gruppe).

s=df.T.reset_index().groupby([0,1])['index'].apply(tuple)
s[s.str.len()>=2].apply(lambda  x : '{0[0]} is same with {0[1]}'.format(x))
Out[797]: 
0  1
4  5    feature1 is same with feature5
7  8    feature3 is same with feature4
Name: index, dtype: object
1
YOBEN_S 17 Apr. 2018 im 17:39

Sie können {{X0 }} Verwenden Sie zum Transponieren Ihres Datenrahmens drop_duplicates und übertragen Sie dann Ihren Datenrahmen noch einmal:

In [6]: df.T.drop_duplicates().T
Out[6]:
   Id  feature1  feature2  feature3  feature6
0   1         4         5         7         5
1   2         5         6         8         5
1
user3483203 17 Apr. 2018 im 17:20

Mögliche Lösung mit der Methode drop_duplicates () . Es wird jedoch nach Zeilen gesucht, daher sollten Sie es auf Ihren transponierten Datenrahmen anwenden und das Ergebnis dann erneut transponieren. Beispiel:

data = [
    [4, 5, 7, 7, 4, 5],
    [5, 6, 8, 8, 5, 5],
     ]

columns=['feature1', 'feature2', 'feature3', 'feature4', 'feature5', 'feature6']

df = pd.DataFrame(data, columns)

df.T.drop_duplicates().T

Um anzuzeigen, welche Funktionen dupliziert werden, können Sie die Methode duplicated () verwenden

df.T.duplicated().T

Wird zeigen:

feature1    False
feature2    False
feature3    False
feature4     True
feature5     True
feature6    False
dtype: bool
0
Olzhas Arystanov 17 Apr. 2018 im 17:36