two the how dataframes python pandas dataframe diff

python - the - Pandas: Diferencia de dos Dataframes



difference between two df pandas (3)

Necesito comparar dos marcos de datos de diferente tamaño por fila e imprimir filas no coincidentes. Vamos a tomar los siguientes dos:

df1 = DataFrame({ ''Buyer'': [''Carl'', ''Carl'', ''Carl''], ''Quantity'': [18, 3, 5, ]}) df2 = DataFrame({ ''Buyer'': [''Carl'', ''Mark'', ''Carl'', ''Carl''], ''Quantity'': [2, 1, 18, 5]})

¿Cuál es la forma más eficiente de hacer filas en df2 e imprimir filas que no estén en df1?

Buyer Quantity Carl 2 Mark 1

Importante: no quiero tener fila:

Buyer Quantity Carl 3

Incluido en el diff:

Ya lo he intentado: comparando dos marcos de datos de diferente longitud fila por fila y agregando columnas para cada fila con igual valor y generando la diferencia en dos marcos de datos Pandas lado a lado, resaltando la diferencia

Pero estos no coinciden con mi problema.

Gracias

Andy


Intente lo siguiente si solo le interesa agregar los nuevos compradores a la otra df:

df_delta=df2[df2[''Buyer''].apply(lambda x: x not in df1[''Buyer''].values)]


merge los 2 dfs usando el método ''exterior'' y pase el indicator=True param indicator=True Esto le dirá si las filas están presentes en / solo izquierda / derecha solamente, luego puede filtrar el df combinado después de:

In [22]: merged = df1.merge(df2, indicator=True, how=''outer'') merged[merged[''_merge''] == ''right_only''] Out[22]: Buyer Quantity _merge 3 Carl 2 right_only 4 Mark 1 right_only


diff = set(zip(df2.Buyer, df2.Quantity)) - set(zip(df1.Buyer, df1.Quantity))

Esta es la primera solución que vino a la mente. Luego puede volver a colocar el conjunto de diferencias en un DF para la presentación.