Me gustaría comparar una columna de un df con otras df. Las columnas son nombres y apellidos. Me gustaría comprobar si una persona en un marco de datos está en otro.
Me gustaría comparar una columna de un df con otras df. Las columnas son nombres y apellidos. Me gustaría comprobar si una persona en un marco de datos está en otro.
Respuestas:
Si desea verificar valores iguales en una determinada columna, digamos Nombre, puede combinar ambos Dataframes en uno nuevo:
mergedStuff = pd.merge(df1, df2, on=['Name'], how='inner')
mergedStuff.head()
Creo que esto es más eficiente y más rápido que where
si tienes un gran conjunto de datos
Comparar valores en dos columnas diferentes
Usando set, obtenga valores únicos en cada columna. La intersección de estos dos conjuntos proporcionará los valores únicos en ambas columnas.
Ejemplo:
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']))
Salida:
{2, 5}
Comparación de nombres de columna de dos marcos de datos
En caso de que esté tratando de comparar los nombres de columna de dos marcos de datos:
Si df1
y df2
son los dos marcos de datos:
set(df1.columns).intersection(set(df2.columns))
Esto proporcionará los nombres de columna únicos que están contenidos en ambos marcos de datos.
Ejemplo:
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))
Salida:
{'c2', 'c3'}