Как реализовать группировку конкретной категории по дате и количеству и как это можно все автоматизировать?
На рис1 показана исходная таблица. Нужно по выбранной категории скомплектовать по дате и количеству (результат на рис2). То есть сколько товара данной категории было продано за 1 и последующие дни.
Использую для группировки:
group_goods_by_date = source.groupby([pd.Grouper(key='DateTime', freq='D'), 'category'])
group_goods_by_date=source[(source['DateTime'] < '2016-09-02') & (source['category'] == 0)]
Не работает должным образом, должна получиться таблица. И как можно автоматизировать, чтобы каждый раз не обращаться к номеру категории?
Date Quantity Category
2016-09-01 1 0
2016-09-01 1 0
2016-09-01 1 1
2016-09-01 1 2
2016-09-02 1 1
2016-09-03 1 0
Должно получиться по категории 0:
Date Quantity
2016-09-01 2
2016-09-03 1
Ответ
Можно создать словарь DataFrame'ов:
In [82]: df_dict = {k:v.reset_index(name='Quantity')
...: for k,v in df.groupby([pd.Grouper(freq='D', key='Date'),
...: 'Category'])['Quantity'].sum()
...: .groupby(level=1)}
In [83]: df_dict.keys()
Out[83]: dict_keys([0, 1, 2])
In [84]: df_dict[0]
Out[84]:
Date Category Quantity
0 2016-09-01 0 2
1 2016-09-03 0 1
In [85]: df_dict[1]
Out[85]:
Date Category Quantity
0 2016-09-01 1 1
1 2016-09-02 1 1
In [86]: df_dict[2]
Out[86]:
Date Category Quantity
0 2016-09-01 2 1
Комментариев нет:
Отправить комментарий