При использовании Pandas DataFrame, как это:
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
Но с примерно 100 000 записей я ищу, чтобы найти и удалить эти списки в двух столбцах построчно.
Это сравнимо с этим вопросом: Pandas: Как сравнивать столбцы списков по строкам в кадре данных с Pandas (не для цикла)? но я смотрю на различия, и Pandas.apply
метод, кажется, не такой быстрый для такого количества записей. Это код, который я сейчас использую. Pandas.apply
с numpy's setdiff1d
методом:
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)
Это прекрасно работает, однако для 120 000 записей требуется около минуты. Так есть ли более быстрый способ сделать это?