Ao ter um DataFrame do Pandas assim:
import pandas as pd
import numpy as np
df = pd.DataFrame({'today': [['a', 'b', 'c'], ['a', 'b'], ['b']],
'yesterday': [['a', 'b'], ['a'], ['a']]})
today yesterday
0 ['a', 'b', 'c'] ['a', 'b']
1 ['a', 'b'] ['a']
2 ['b'] ['a']
... etc
Porém, com cerca de 100.000 entradas, estou procurando encontrar as adições e remoções dessas listas nas duas colunas em uma linha.
É comparável a esta pergunta: Pandas: Como comparar colunas de listas em linhas em um DataFrame com Pandas (não para loop)? mas estou observando as diferenças, e o Pandas.apply
método parece não ser tão rápido para tantas entradas. Este é o código que estou usando no momento. Pandas.apply
com o numpy's setdiff1d
método:
additions = df.apply(lambda row: np.setdiff1d(row.today, row.yesterday), axis=1)
removals = df.apply(lambda row: np.setdiff1d(row.yesterday, row.today), axis=1)
Isso funciona bem, no entanto, leva cerca de um minuto para 120 000 entradas. Então, existe uma maneira mais rápida de conseguir isso?