Ich habe eine Liste, die wie folgt aussieht:Iterate durch Pandas Reihen effizient
lst = ['a','b','c']
und einen Datenrahmen, der das wie folgt aussieht:
id col1
1 ['a','c']
2 ['b']
3 ['b', 'a']
Ich suche eine neue Spalte in dem Datenrahmen erstellen das hat die Länge des Schnittpunkts der ersten und der einzelnen Listen von sp1
id col1 intersect
1 ['a','c'] 2
2 ['b'] 1
3 ['d', 'a'] 1
Derzeit sieht mein Code wie aus dies:
df['intersection'] = np.nan
for i, r in df.iterrows():
## If-Statement to deal with Nans in col1
if r['col1'] == r['col1']:
df['intersection'][i] = len(set(r['col1']).intersection(set(lst)))
Das Problem ist, dass dieser Code ist extrem zeitaufwändig auf meinem Datensatz von 200K Zeilen und schneidet eine Liste von 200 Elementen. Gibt es eine Möglichkeit, dies effizienter zu tun?
Danke!
Warum brauchen Sie die if-Anweisung? Sieht es für mich immer so aus? – Psidom
auf nans überprüfen. x == x gibt false zurück, wenn x ein nan ist. – eljusticiero67