Wie vergleiche ich Spalten in verschiedenen Datenrahmen?
23
Ich möchte eine Spalte eines DF mit anderen DFs vergleichen. Die Spalten sind Namen und Nachnamen. Ich möchte überprüfen, ob sich eine Person in einem Datenrahmen in einem anderen befindet.
Könnten Sie bitte angeben, wie das Ergebnis aussehen soll? Ist es ein df mit Namen, die in beiden dfs erscheinen, und ob Sie noch etwas anderes wie count oder eine passende Spalte in df2 usw. Benötigen? Vielen Dank!
Sie können die beiden Datenrahmen in den gewünschten Spalten miteinander verbinden und prüfen, ob die Anzahl der Zeilen im Ergebnis positiv ist.
DSAXTON
Zu Ihrer Information: Der Vergleich von Vor- und Nachnamen bei einer anständigen Anzahl von Namen führt zu Schmerzen - viele Menschen haben denselben Namen!
Ken Syme
Antworten:
22
Wenn Sie in einer bestimmten Spalte Gleichheitswerte überprüfen möchten, sagen wir mal Name, können Sie beide Datenrahmen zu einem neuen zusammenführen:
Ich denke, bei der Frage geht es darum, die Werte in zwei verschiedenen Spalten in verschiedenen Datenrahmen zu vergleichen, da die fragende Person prüfen möchte, ob sich eine Person in einem Datenrahmen in einem anderen befindet.
Divyanshu Shekhar
Danke, ich habe die Frage falsch verstanden. Ich habe die Antwort jetzt aktualisiert.
Aathiraks
1
Sie können die genaue Anzahl der gemeinsamen und unterschiedlichen Positionen zwischen zwei df überprüfen, indem Sie isin und value_counts () verwenden.
Beachten Sie, dass die Spalten der Datenrahmen Datenreihen sind. Wenn Sie also zwei Spalten als Pandas-Reihe verwenden, können Sie sie genau wie numpy-Arrays vergleichen.
Antworten:
Wenn Sie in einer bestimmten Spalte Gleichheitswerte überprüfen möchten, sagen wir mal Name, können Sie beide Datenrahmen zu einem neuen zusammenführen:
Ich denke, das ist effizienter und schneller als
where
wenn Sie einen großen Datenbestand habenquelle
True
Einträge zeigen gemeinsame Elemente. Dies zeigt auch die Position der gemeinsamen Elemente im Gegensatz zur Lösung mitmerge
.quelle
df.
in deiner Antwort? Es gibt nurdf1
unddf2
aber keinedf
Vergleichen von Werten in zwei verschiedenen Spalten
Mit set erhalten Sie eindeutige Werte in jeder Spalte. Der Schnittpunkt dieser beiden Mengen liefert die eindeutigen Werte in beiden Spalten.
Beispiel:
df1 = pd.DataFrame({'c1': [1, 4, 7], 'c2': [2, 5, 1], 'c3': [3, 1, 1]}) df2 = pd.DataFrame({'c4': [1, 4, 7], 'c2': [3, 5, 2], 'c3': [3, 7, 5]}) set(df1['c2']).intersection(set(df2['c2']))
Ausgabe:
{2, 5}
Spaltennamen zweier Datenrahmen vergleichen
Wenn Sie versuchen, die Spaltennamen von zwei Datenrahmen zu vergleichen:
Wenn
df1
unddf2
sind die beiden Datenrahmen:set(df1.columns).intersection(set(df2.columns))
Dies liefert die eindeutigen Spaltennamen, die in beiden Datenrahmen enthalten sind.
Beispiel:
Ausgabe:
{'c2', 'c3'}
quelle
Sie können die genaue Anzahl der gemeinsamen und unterschiedlichen Positionen zwischen zwei df überprüfen, indem Sie isin und value_counts () verwenden.
So wie das:
Ergebnis:
Wahr = gemeinsam Falsch = unterschiedlich
quelle
Beachten Sie, dass die Spalten der Datenrahmen Datenreihen sind. Wenn Sie also zwei Spalten als Pandas-Reihe verwenden, können Sie sie genau wie numpy-Arrays vergleichen.
quelle