Tôi có một df bình thườngLàm thế nào để sử dụng groupby để áp dụng nhiều chức năng cho nhiều cột trong Pandas?
A = pd.DataFrame([[1, 5, 2], [2, 4, 4], [3, 3, 1], [4, 2, 2], [5, 1, 4]],
columns=['A', 'B', 'C'], index=[1, 2, 3, 4, 5])
Sau this recipe, tôi nhận được kết quả tôi muốn.
In [62]: A.groupby((A['A'] > 2)).apply(lambda x: pd.Series(dict(
up_B=(x.B >= 0).sum(), down_B=(x.B < 0).sum(), mean_B=(x.B).mean(), std_B=(x.B).std(),
up_C=(x.C >= 0).sum(), down_C=(x.C < 0).sum(), mean_C=(x.C).mean(), std_C=(x.C).std())))
Out[62]:
down_B down_C mean_B mean_C std_B std_C up_B up_C
A
False 0 0 4.5 3.000000 0.707107 1.414214 2 2
True 0 0 2.0 2.333333 1.000000 1.527525 3 3
Cách tiếp cận này là tốt, nhưng hãy tưởng tượng bạn phải làm điều này cho một số lượng lớn cột (15-100), sau đó bạn phải nhập tất cả nội dung đó vào công thức, có thể cồng kềnh.
Cho rằng các công thức tương tự được áp dụng cho TẤT CẢ các cột. Có một cách hiệu quả để làm điều này cho một số lượng lớn các cột ?.
Cảm ơn
này là rất rõ ràng. Cảm ơn. – hernanavella