Wenn Sie einen Pandas DataFrame wie diesen haben:
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
Aber mit ungefähr 100 000 Einträgen suche ich nach zeilenweisen Hinzufügungen und Entfernungen dieser Listen in den beiden Spalten.
Es ist vergleichbar mit dieser Frage: Pandas: Wie vergleiche ich Spalten von Listen zeilenweise in einem DataFrame mit Pandas (nicht für Schleife)? aber ich betrachte die Unterschiede, und die Pandas.applyMethode scheint für so viele Einträge nicht so schnell zu sein. Dies ist der Code, den ich derzeit verwende. Pandas.applymit numpy's setdiff1dMethode:
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)
Dies funktioniert einwandfrei, dauert jedoch ungefähr eine Minute für 120 000 Einträge. Gibt es einen schnelleren Weg, dies zu erreichen?