2016-09-22 6 views
1

とGROUPBY私はデータフレームがあります。パンダ:条件

ID,used_at,active_seconds,subdomain,visiting,category 
123,2016-02-05 19:39:21,2,yandex.ru,2,Computers 
123,2016-02-05 19:43:01,1,mail.yandex.ru,2,Computers 
123,2016-02-05 19:43:13,6,mail.yandex.ru,2,Computers 
234,2016-02-05 19:46:09,16,avito.ru,2,Automobiles 
234,2016-02-05 19:48:36,21,avito.ru,2,Automobiles 
345,2016-02-05 19:48:59,58,avito.ru,2,Automobiles 
345,2016-02-05 19:51:21,4,avito.ru,2,Automobiles 
345,2016-02-05 19:58:55,4,disk.yandex.ru,2,Computers 
345,2016-02-05 19:59:21,2,mail.ru,2,Computers 
456,2016-02-05 19:59:27,2,mail.ru,2,Computers 
456,2016-02-05 20:02:15,18,avito.ru,2,Automobiles 
456,2016-02-05 20:04:55,8,avito.ru,2,Automobiles 
456,2016-02-05 20:07:21,24,avito.ru,2,Automobiles 
567,2016-02-05 20:09:03,58,avito.ru,2,Automobiles 
567,2016-02-05 20:10:01,26,avito.ru,2,Automobiles 
567,2016-02-05 20:11:51,30,disk.yandex.ru,2,Computers 

を私は

group = df.groupby(['category']).agg({'active_seconds': sum}).rename(columns={'active_seconds': 'count_sec_target'}).reset_index() 

を行う必要がありますが、私は

df.groupby(['category'])['ID'].count() 

とカウント場合に接続が条件を追加したいですcategory5未満です。このカテゴリを削除します。 わかりませんが、どうすればこの状態を書くことができますか?

+2

何のカテゴリはできなくなりますしかし、あなたは 'df.groupby( 'category')のようなものの後ろにいますか?filter(lambda x:len(x)> = 5)' – EdChum

答えて

4

EdChum commentedとして、あなたはfilter使用することができます。

また、あなたがsumによって凝集を簡素化することができます:

df = df.groupby(['category']).filter(lambda x: len(x) >= 5) 

group = df.groupby(['category'], as_index=False)['active_seconds'] 
      .sum() 
      .rename(columns={'active_seconds': 'count_sec_target'}) 
print (group) 

     category count_sec_target 
0 Automobiles    233 
1 Computers    47 

reset_indexと別の解決策:あなたのサンプルデータで

group = df.groupby(['category'])['active_seconds'].sum().reset_index(name='count_sec_target') 
print (group) 
     category count_sec_target 
0 Automobiles    233 
1 Computers    47 
関連する問題