Böyle bir Panda DataFrame'iniz olduğunda:
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
Ancak yaklaşık 100 000 girişle, bu listelerin eklerini ve kaldırılmasını iki sütunda satır bazında bulmak istiyorum.
Şu soru ile karşılaştırılabilir: Pandalar: Bir DataFrame'deki Listelerin Sütunlarını Pandalarla (döngü için değil) nasıl karşılaştırırım? ancak farklılıklara bakıyorum ve Pandas.apply
yöntem bu kadar çok giriş için o kadar hızlı görünmüyor. Şu anda kullandığım kod bu. Pandas.apply
ile numpy's setdiff1d
yöntem:
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)
Bu iyi çalışır, ancak 120.000 giriş için yaklaşık bir dakika sürer. Bunu başarmanın daha hızlı bir yolu var mı?