Ich versuche, eine wachsende Anzahl von Tupel von Strings nach Gruppe zu erstellen.Pandas erweitern Anzahl der Zeichenfolge Auftreten von Gruppe
index category group
2000-01-01 ('foo',) a
2000-01-02 ('tito', 'puente') a
2000-01-03 ('bar',) a
2000-01-04 ('zip',) b
2000-01-05 ('zorp',) b
2000-01-03 ('feep',) c
würde.
index category group tuple_count
2000-01-01 ('foo',) a 0
2000-01-02 ('tito', 'puente') a 1
2000-01-03 ('bar',) a 2
2000-01-04 ('zip',) b 0
2000-01-05 ('zorp',) b 0
2000-01-03 ('feep',) c 1
Die Idee ist, dass ich ein expandierendes Fenster, durch Gruppe der Zählungen des Auftretens von Kategorien erstellen möchten, die ich in In diesem Fall interessiert bin, Die interessanten Kategorien sind [('tito', 'puente'), ('bar',), ('feep',)]
. Wenn eine neue Kategorie angezeigt wird, möchte ich die Anzahl erhöhen.
Ich bin mit dem folgenden Code und kann nicht herausfinden, warum es nicht
from operator import or_
def count_categories(ser):
categories_to_count = [('tito', 'puente'),
('bar',),
('feep',)]
conditions = [ser == val for val in categories_to_count]
mask = reduce(or_, conditions)
return mask.sum()
def expanding_count_categories(s):
return s.expanding().apply(count_categories)
df.groupby('group')['category'].apply(expanding_count_categories)
Für die tuple_count Spalte arbeitet, bekomme ich nur die Kategorie Spalt zurück:
index tuple_count
2000-01-01 ('foo',)
2000-01-02 ('tito', 'puente')
2000-01-03 ('bar',)
2000-01-04 ('zip',)
2000-01-05 ('zorp',)
2000-01-03 ('feep',)
edit:
Problem scheint zu sein, dass nicht-numerische Werte sind zur Zeit not handled by expanding/window
Ich kann die Logik dieses Tuple_count nicht verstehen. Warum sind die b's null und erste c eins? – Parfait
'count_categories' zählt nur das Aussehen der Tupel in' categories_to_count'. 'b' Kategorien sind nicht in dieser Liste. – Luke