Я пытаюсь создать увеличивающееся количество по группам числа кортежей строк.Pandas разворачивание числа строк по группам
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
бы стать:.
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
Идея заключается в том, что я хочу, чтобы создать расширяющееся окно группы графов возникновения категорий, я интересуюсь В этом случае, интересными категориями являются [('tito', 'puente'), ('bar',), ('feep',)]
. Когда появится новая категория, я хочу добавить к счету.
Я использую следующий код и не могу понять, почему он не работает
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)
Для столбца tuple_count, я просто получить столбец категории обратно:
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',)
редактирование:
Проблема, кажется, что не-числовые в настоящее время not handled by expanding/window
Я не могу понять логику этого tuple_count. Почему ноль b и первый c один? – Parfait
'count_categories' только учитывает появление кортежей в' categories_to_count'. В этом списке нет категорий 'b'. – Luke