Pandalar grup çalışması sonucunda filtreyi gerçekleştirirken, bir veri çerçevesi döndürür. Ama daha fazla grup hesaplaması yapmak istediğimi varsayarsak, tekrar gruplama çağrısı yapmalıyım. Bunu yapmanın daha aptalca bir yolu var mı?Pandas GroupBy nesnesini nasıl filtreleyebilir ve GroupBy nesnesini nasıl geri alabilirim?
DÜZENLEME:
ben neden bahsettiğimi göstermek için:
Biz utanmadan Pandalar dokümanlardan bir oyuncak dataframe çalmak ve grup:
>>> dff = pd.DataFrame({'A': np.arange(8), 'B': list('aabbbbcc')})
>>> grouped = dff.groupby('B')
>>> type(grouped)
<class 'pandas.core.groupby.DataFrameGroupBy'>
Bu GroupBy döndürür üzerinde yineleyebileceğimiz, grup-bilge operasyonlarını vb. gerçekleştirebileceğimiz nesne. Ama eğer biz filtre yaparsak:
>>> filtered = grouped.filter(lambda x: len(x) > 2)
>>> type(filtered)
<class 'pandas.core.frame.DataFrame'>
Bir veri aralığına geri dönüyoruz. Filtre uygulanmış grupları elde etmek için filtrelenmiş grupları elde etmek yerine, yalnızca orijinal satırlar yerine, güzel bir deyim var mı?
Lütfen neden bahsettiğinize bir örnek verin. – BrenBarn
Bu iyi bir queston olduğunu düşünüyorum, SQL ile groupby birleştirebilirsiniz ve kullanıcı olarak SUM (like) GROUP BY kullanıcı HAVING toplam (seviyor)> 10 'olarak gruplandırılırken, pandalar yapmak zorunda kalacaksınız df. groupby ('kullanıcı'). filter (lambda x: len (x)> 10) .groupby ('user'). likes.sum() '; belki de cevap, 'groupby' içinde bir filter anahtar kelimesi veya' filter'de 'as_index' anahtar kelimesi eklemek olabilir mi? – maxymoo
@BrenBarn: örnek eklendi. –