Sử dụng gấu trúc, có thể tính toán một bảng chéo đơn (hoặc bảng tổng hợp) có chứa các giá trị được tính từ hai hàm khác nhau không?cách sử dụng hai hàm khác nhau trong crosstab/pivot_table trong gấu trúc?
import pandas as pd
import numpy as np
c1 = np.repeat(['a','b'], [50, 50], axis=0)
c2 = list('xy'*50)
c3 = np.repeat(['G1','G2'], [50, 50], axis=0)
np.random.shuffle(c3)
c4=np.repeat([1,2], [50,50],axis=0)
np.random.shuffle(c4)
val = np.random.rand(100)
df = pd.DataFrame({'c1':c1, 'c2':c2, 'c3':c3, 'c4':c4, 'val':val})
frequencyTable = pd.crosstab([df.c1,df.c2],[df.c3,df.c4])
meanVal = pd.crosstab([df.c1,df.c2],[df.c3,df.c4],values=df.val,aggfunc=np.mean)
Vì vậy, cả các hàng và các cột đều giống nhau ở cả hai bảng, nhưng những gì tôi thực sự muốn là một bảng với cả hai tần số và giá trị trung bình:
c3 G1 G2
c4 1 2 1 2
c1 c2 freq val freq val freq val freq val
a x 6 0.624931 5 0.582268 8 0.528231 6 0.362804
y 7 0.493890 8 0.465741 3 0.613126 7 0.312894
b x 9 0.488255 5 0.804015 6 0.722640 5 0.369480
y 6 0.462653 4 0.506791 5 0.583695 10 0.517954
Bạn đã thử sử dụng 'aggfunc = [func1, func2]'? Tôi không có ý tưởng nếu điều này hoạt động nhưng tôi nghĩ rằng tôi đã nhìn thấy nó trước khi một nơi nào đó. – Brian
@ Brian: Vâng, tôi vừa thử câu trả lời của joris, và nó hoạt động rất tốt! Cảm ơn nhiều! – HappyPy
Tôi chỉ nên bắt đầu đăng ý kiến của tôi như là câu trả lời :-p – Brian