Vì vậy, tôi cần nhóm các hàng theo cột "fh_status" rồi thực hiện giá trị tối thiểu, trung bình và tối đa của "gini" cho mỗi nhóm (sẽ có ba). Tôi đã nghĩ ra mã này:
m = (df2.groupby(['fh_status']).max().iloc[:, 2]) #iloc2 tương ứng với cột gini
n = (df2.groupby(['fh_status']).min().iloc[:, 2])
e = (df2.groupby(['fh_status']).mean().iloc[:, 2])
nl = '\n'
print(f' nghĩa là: {e} {nl} tối đa: {m} {nl} tối thiểu:{n}')
Đầu ra:
nghĩa là: fh_status
miễn phí 38.170175
không miễn phí 39,750000
miễn phí một phần 43.931250
Tên: gini, dtype: float64
tối đa: fh_status
miễn phí 10.0
không miễn phí 5.0
miễn phí một phần 9.0
Tên: ô nhiễm09, dtype: float64
tối thiểu:fh_status
miễn phí 6.0
không miễn phí -10.0
miễn phí một phần -6.0
Tên: ô nhiễm09, dtype: float64
Sử dụng cả ba trong một chuỗi không có tác dụng (theo như tôi biết thì nó chỉ in lệnh sau), do đó ba biến xuất hiện, hơi khó sử dụng. Kết quả đầu ra có vẻ đúng nhưng tôi khá chắc chắn rằng có cách để tối ưu hóa nó và giảm số lượng mã. Hay không?
Có, bạn có thể sử dụng .agg(..)
và vượt qua danh sách các hoạt động:
df2.groupby('fh_status')['gini'].agg(['min', 'max', 'mean'])
Điều này sẽ tạo ra một khung dữ liệu với các cột dưới dạng tổng hợp (phút
,max
,nghĩa là
), nhóm hành vi (giá trị bạn đã tạo ở trên .groupby(..)
).
Giới thiệu về python - Có cách nào để xuất df.min, df.max và df.mean trong Pandas.groupby trong một cột nhất định tại một thời điểm không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/58894526/
Tôi là một lập trình viên xuất sắc, rất giỏi!