Pandas: encuentra filas coincidentes en dos dataframes (sin usar `merge`)
Supongamos que tengo estos dos dataframes con el mismo número de columnas, pero posiblemente diferentes número de filas:
tmp = np.arange(0,12).reshape((4,3))
df = pd.DataFrame(data=tmp)
tmp2 = {'a':[3,100,101], 'b':[4,4,100], 'c':[5,100,3]}
df2 = pd.DataFrame(data=tmp2)
print(df)
0 1 2
0 0 1 2
1 3 4 5
2 6 7 8
3 9 10 11
print(df2)
a b c
0 3 4 5
1 100 4 100
2 101 100 3
Quiero verificar si las filas de df2
coinciden con alguna de las filas de df
, es decir, quiero obtener una serie (o un arreglo) de valores booleanos que den este resultado:
0 True
1 False
2 False
dtype: bool
Creo que algo como el método isin
debería funcionar, pero obtengo este resultado, que es incorrecto ya que resulta en un dataframe:
print(df2.isin(df))
a b c
0 False False False
1 False False False
2 False False False
Como restricción, deseo evitar utilizar el método merge
, ya que lo que estoy haciendo es en realidad una comprobación de los datos antes de aplicar el propio merge.
¡Gracias por tu ayuda!
davy.ai
Para verificar si las filas de
df2
coinciden con alguna fila dedf
, podemos utilizar el métodoisin()
junto con el métodoall()
. Primero, necesitamos crear un nuevo dataframedf3
que tenga la misma forma quedf2
, pero que contenga solo valores True. Luego, podemos utilizar el métodoisin()
para verificar si cada fila dedf2
está endf
y finalmente utilizar el métodoall()
para verificar si todos los valores en cada fila del dataframe resultante son True. Aquí está el código:Esto imprimirá el siguiente resultado:
La serie resultante contiene los valores booleanos esperados para cada fila de
df2
.