2013-07-12 3 views
0

В частности, говорят, у меня есть DataFrame вроде этого:питона панды GroupBy отфильтровывать

appid mac_id count 

1  a  1 

2  b  1 

2  c  1 

3  d  1 

3  e  1 

И я также есть:

mac_list = ['b', 'd', 'e'] 

Я хочу, чтобы сгруппировать этот кадр данных на AppID и для каждой группы фильтр mac_id, если он находится в mac_list. Последняя, ​​сумма (количество) для каждой группы.

для этого DataFrame результата является:

appid count 

1   0 

2   1 

3   2 

Как я могу сделать это с пандой?

ответ

6
>>> df = pd.DataFrame({"appid": [1,2,2,3,3], "mac_id": ['a', 'b', 'c', 'd', 'e'], "count": [1,1,1,1,1]}) 
>>> summer = lambda x: x[x["mac_id"].isin(mac_list)].sum() 
>>> df.groupby("appid").apply(summer)["count"] 
    18 
appid 
1  0 
2  1 
3  2 
Name: count, dtype: object 
Смежные вопросы