Saat memiliki Pandaf DataFrame seperti ini:
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
Tetapi dengan sekitar 100.000 entri, saya mencari untuk menemukan penambahan dan penghapusan daftar itu di dua kolom berdasarkan baris-bijaksana.
Ini sebanding dengan pertanyaan ini: Pandas: Bagaimana Membandingkan Kolom Daftar Baris-bijaksana dalam DataFrame dengan Pandas (bukan untuk loop)? tapi saya melihat perbedaannya, dan Pandas.apply
metode sepertinya tidak secepat itu untuk banyak entri. Ini adalah kode yang saya gunakan saat ini. Pandas.apply
dengan numpy's setdiff1d
metode:
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)
Ini berfungsi dengan baik, namun dibutuhkan sekitar satu menit untuk 120 000 entri. Jadi adakah cara yang lebih cepat untuk mencapai ini?