pensé esta La solución resolvería mi problema, pero la operación aquí necesitaba verificar si las filas de sus dos marcos de datos contenían una diferencia. Quiero hacer lo mismo pero para las columnas. La solucion fue ne = (df1 != df2).any(1)
Pero eso no ayuda con mis columnas. Sí, acabo de comprobar y mis dos marcos de datos tienen exactamente el mismo shape
. Si lo hago df1 == df2
Me da un nuevo marco de datos lleno de verdades yfalsas En cuanto a las primeras cien filas, parece que la mayoría de las columnas con algunas excepciones son iguales. ¿Cómo se puede obtener un verdadero / falso para cada columna?
Aquí hay un ejemplo de juguete:
import numpy as np
import pandas as pd
df1 = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)), columns=["a", "b", "c", "d", "e"])
df2 = df1.copy()
df2.at[3,"d"] += 10
Salida deseada:
A True
B True
C True
D False
E True
Respuestas
3 para la respuesta № 1Utilizar DataFrame.all
para comprobar si todos los valores por filas son True
s:
print ((df1 == df2).all())
a True
b True
c True
d False
e True
dtype: bool
Detalle:
print (df1 == df2)
a b c d e
0 True True True True True
1 True True True True True
2 True True True True True
3 True True True False True
4 True True True True True
Solución con any
También es posible, solo se necesita la salida invertida por ~
:
print (~((df1 != df2).any()))
a True
b True
c True
d False
e True
dtype: bool