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.
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.
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:
mergedStuff = pd.merge(df1, df2, on=['Name'], how='inner')
mergedStuff.head()
Ich denke, das ist effizienter und schneller als where
wenn Sie einen großen Datenbestand haben
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
und df2
sind die beiden Datenrahmen:
set(df1.columns).intersection(set(df2.columns))
Dies liefert die eindeutigen Spaltennamen, die in beiden Datenrahmen enthalten sind.
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.columns).intersection(set(df2.columns))
Ausgabe:
{'c2', 'c3'}
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:
df['your_column_name'].isin(df2['your_column_name']).value_counts()
Ergebnis:
Wahr = gemeinsam Falsch = unterschiedlich