¿Cómo comparo columnas en diferentes marcos de datos?
23
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.
¿Podría indicar cómo desea que se vea el resultado? ¿Es un df con nombres que aparecen en ambos dfs, y si también necesita algo más, como conteo o columna coincidente en df2, etc. ¡Gracias!
Puede unir internamente los dos marcos de datos en las columnas que le interesan y verificar si el número de filas en el resultado es positivo.
dsaxton
Para su información, comparar el nombre y el apellido en cualquier conjunto de nombres bastante grande terminará con dolor, ¡muchas personas tienen el mismo nombre!
Ken Syme
Respuestas:
22
Si desea verificar valores iguales en una determinada columna, digamos Nombre, puede combinar ambos Dataframes en uno nuevo:
Creo que la pregunta se trata de comparar los valores en dos columnas diferentes en marcos de datos diferentes, ya que la persona que pregunta quiere verificar si una persona en un marco de datos está en otro.
Divyanshu Shekhar
Gracias, me equivoqué de pregunta. He actualizado la respuesta ahora.
aathiraks
1
Puede hacer doble comprobar el número exacto de posiciones comunes y diferentes entre dos df utilizando isin y value_counts ()
Tenga en cuenta que las columnas de los marcos de datos son series de datos. Entonces, si toma dos columnas como series de pandas, puede compararlas tal como lo haría con matrices numpy.
Respuestas:
Si desea verificar valores iguales en una determinada columna, digamos Nombre, puede combinar ambos Dataframes en uno nuevo:
Creo que esto es más eficiente y más rápido que
where
si tienes un gran conjunto de datosfuente
True
Las entradas muestran elementos comunes. Esto también revela la posición de los elementos comunes, a diferencia de la solución conmerge
.fuente
df.
en tu respuesta? Hay solamentedf1
ydf2
, pero nodf
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
ydf2
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:
Salida:
{'c2', 'c3'}
fuente
Puede hacer doble comprobar el número exacto de posiciones comunes y diferentes entre dos df utilizando isin y value_counts ()
Como eso:
Resultado:
Verdadero = común Falso = diferente
fuente
Tenga en cuenta que las columnas de los marcos de datos son series de datos. Entonces, si toma dos columnas como series de pandas, puede compararlas tal como lo haría con matrices numpy.
fuente