Giới thiệu
Để đếm distinct (số giá trị duy nhất) trong aggregation Pandas, dùng pd.Series.nunique trong agg(). Kết hợp với np.sum để tính tổng cột khác.
Ví dụ minh họa
import pandas as pd
import numpy as np
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Audi', 'BMW', 'Lexus', 'Lexus'],
"Place": ['Delhi', 'Bangalore', 'Delhi', 'Chandigarh', 'Chandigarh'],
"Units": [100, 150, 50, 110, 90]
}
)
print("DataFrame ...\n", dataFrame)
# Groupby Car, agg: sum Units, nunique Place
dataFrame = dataFrame.groupby("Car").agg({"Units": np.sum, "Place": pd.Series.nunique})
print("\nDataFrame sau aggregation:")
print(dataFrame)
Kết quả đầu ra
DataFrame ...
Car Place Units
0 BMW Delhi 100
1 Audi Bangalore 150
2 BMW Delhi 50
3 Lexus Chandigarh 110
4 Lexus Chandigarh 90
DataFrame sau aggregation:
Units Place
Car
Audi 150 1
BMW 150 1
Lexus 200 1
Giải thích: BMW: Units sum=150, Place unique=1 (chỉ Delhi). Lexus: Units sum=200, Place unique=1 (chỉ Chandigarh). Audi: 150, 1.