Vorrei confrontare una colonna di un df con altri df. Le colonne sono nomi e cognomi. Vorrei verificare se una persona in un frame di dati si trova in un altro.
Vorrei confrontare una colonna di un df con altri df. Le colonne sono nomi e cognomi. Vorrei verificare se una persona in un frame di dati si trova in un altro.
Risposte:
Se vuoi controllare valori uguali su una determinata colonna diciamo Nome puoi unire entrambi i Dataframe con uno nuovo:
mergedStuff = pd.merge(df1, df2, on=['Name'], how='inner')
mergedStuff.head()
Penso che questo sia più efficiente e più veloce where
se hai un set di big data
Confronto di valori in due colonne diverse
Usando set, ottieni valori univoci in ogni colonna. L'intersezione di questi due insiemi fornirà i valori univoci in entrambe le colonne.
Esempio:
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']))
Produzione:
{2, 5}
Confronto tra i nomi delle colonne di due frame di dati
Nel caso in cui si stia tentando di confrontare i nomi delle colonne di due frame di dati:
Se df1
e df2
sono i due frame di dati:
set(df1.columns).intersection(set(df2.columns))
Ciò fornirà i nomi di colonna univoci contenuti in entrambi i frame di dati.
Esempio:
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))
Produzione:
{'c2', 'c3'}