Khi thực hiện bộ lọc trên kết quả của một hoạt động nhóm Pandas, nó trả về một khung dữ liệu. Nhưng giả sử rằng tôi muốn thực hiện các tính toán nhóm hơn nữa, tôi phải gọi lại nhóm một lần nữa, điều này dường như sắp xếp lại. Có cách nào khác để làm điều này không?Làm cách nào để lọc đối tượng Pandas GroupBy và lấy đối tượng GroupBy?
EDIT:
Để minh họa cho những gì tôi đang nói về:
Chúng tôi không biết xấu hổ ăn cắp một dataframe đồ chơi từ các tài liệu Pandas, và nhóm:
>>> dff = pd.DataFrame({'A': np.arange(8), 'B': list('aabbbbcc')})
>>> grouped = dff.groupby('B')
>>> type(grouped)
<class 'pandas.core.groupby.DataFrameGroupBy'>
này trả về một groupby đối tượng mà chúng tôi có thể lặp lại, thực hiện các hoạt động theo nhóm, v.v. Nhưng nếu chúng tôi lọc:
>>> filtered = grouped.filter(lambda x: len(x) > 2)
>>> type(filtered)
<class 'pandas.core.frame.DataFrame'>
Chúng tôi lấy lại một khung dữ liệu. Có một cách thành ngữ tốt đẹp để có được các nhóm được lọc trở lại, thay vì chỉ các hàng ban đầu thuộc về các nhóm được lọc không?
Vui lòng cho ví dụ về những gì bạn đang nói đến. – BrenBarn
Tôi nghĩ rằng đây là một queston tốt, trong SQL bạn có thể kết hợp groupby bởi và lọc như 'người dùng SELECT, SUM (thích) GROUP BY user HAVING sum (thích)> 10' trong khi trong gấu trúc bạn sẽ phải làm' df. bộ lọc nhóm ('người dùng') (lambda x: len (x)> 10) .groupby ('user'). likes.sum() '; có lẽ câu trả lời sẽ bao gồm một từ khóa lọc trong 'groupby' hoặc một từ khóa' as_index' trong 'filter'? – maxymoo
@BrenBarn: đã thêm ví dụ. –