Якщо у вас є такий DataFrame Pandas:
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: Як порівнювати стовпці списків рядно в DataFrame з 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 записів потрібно близько хвилини. То чи існує більш швидкий спосіб досягти цього?