2016-06-28 5 views
4

Существует панду dataframe на входе:падение панды dataframe строки на основе GroupBy() условие

store_id item_id items_sold  date 
1   1   0  2015-12-28 
1   2   1  2015-12-28 
1   1   0  2015-12-28 
2   2   0  2015-12-28 
2   1   1  2015-12-29 
2   2   1  2015-12-29 
2   1   0  2015-12-29 
3   1   0  2015-12-30 
3   1   0  2015-12-30 

Мне нужно удалить все строки с элементами, которые никогда не были проданы в частности магазина: пар (1,1), (3,1) из (store_id, item_id) в dataframe

выход я ожидать следующий:

store_id item_id items_sold  date 
1   2   1  2015-12-28 
2   2   0  2015-12-28 
2   1   1  2015-12-29 
2   2   1  2015-12-29 
2   1   0  2015-12-29 

Я понял, как найти необходимые пары (store_id, item_id) с помощью pd.groupby()[].sum(), но застряли с отбрасыванием их из начального информационного кадра

ответ

5

это то, что вы хотите?

In [30]: df[df.groupby(['store_id', 'item_id'])['items_sold'].transform('sum') > 0] 
Out[30]: 
    store_id item_id items_sold  date 
1   1  2   1 2015-12-28 
3   2  2   0 2015-12-28 
4   2  1   1 2015-12-29 
5   2  2   1 2015-12-29 
6   2  1   0 2015-12-29 
+0

Ровно! Спасибо –

+0

@ СашаКореков, добро пожаловать! :) – MaxU

+0

какой красивый ответ – Aaron

Смежные вопросы