Có thể trực tiếp tính toán sản phẩm (hoặc ví dụ tổng hợp) của hai cột mà không sử dụngchức năng groupby bằng Python Pandas như SUM (col_1 * col_2), bình quân gia quyền vv
grouped.apply(lambda x: (x.a*x.b).sum()
Đó là nhiều (ít hơn một nửa thời gian trên máy của tôi) nhanh hơn để sử dụng
df['helper'] = df.a*df.b
grouped= df.groupby(something)
grouped['helper'].sum()
df.drop('helper', axis=1)
Nhưng tôi thực sự không thích phải làm điều này. Ví dụ: Ví dụ: hữu ích để tính toán mức trung bình có trọng số cho mỗi nhóm. Ở đây, cách tiếp cận lambda sẽ là
grouped.apply(lambda x: (x.a*x.b).sum()/(df.b).sum())
và lại chậm hơn nhiều so với việc chia helper cho b.sum().
này hoạt động của khóa học. Nhưng tôi nghi ngờ rằng đầu tiên toàn bộ vector C * D được xây dựng trong bộ nhớ, sau đó nó được nhóm lại và sau đó tổng kết. Tôi sẽ không phải làm điều này nếu tôi có thể đi qua các hàng một cách hiệu quả, cộng lại c_i * d_i (hoặc chỉ xây dựng nhóm C * D và sau đó tổng hợp chúng trong khi đi qua các nhóm). –