Tôi có một khung dữ liệu và tôi muốn nhóm nó theo một cột cụ thể (hoặc, nói cách khác, bằng các giá trị từ một cột cụ thể). Tôi có thể thực hiện theo cách sau: grouped = df.groupby(['ColumnName'])
.Làm cách nào để áp dụng các hàm "đầu tiên" và "cuối cùng" cho các cột trong khi sử dụng nhóm theo gấu trúc?
Tôi tưởng tượng kết quả của thao tác này dưới dạng bảng trong đó một số ô có thể chứa tập giá trị thay vì giá trị đơn. Để có được một bảng thông thường (tức là một bảng trong đó mỗi ô chỉ chứa một giá trị duy nhất), tôi cần chỉ ra hàm nào tôi muốn sử dụng để chuyển đổi tập các giá trị trong các ô thành các giá trị đơn.
Ví dụ: tôi có thể thay thế tập giá trị theo tổng của chúng hoặc bằng giá trị tối thiểu hoặc tối đa của chúng. Tôi có thể thực hiện theo cách sau: grouped.sum()
hoặc grouped.min()
và cứ tiếp tục như vậy.
Bây giờ tôi muốn sử dụng các chức năng khác nhau cho các cột khác nhau. Tôi đã tìm ra rằng tôi có thể thực hiện theo cách sau: grouped.agg({'ColumnName1':sum, 'ColumnName2':min})
.
Tuy nhiên, vì một số lý do tôi không thể sử dụng first
. Để biết thêm chi tiết, grouped.first()
hoạt động, nhưng grouped.agg({'ColumnName1':first, 'ColumnName2':first})
không hoạt động. Kết quả là tôi nhận được một NameError: NameError: name 'first' is not defined
. Vì vậy, câu hỏi của tôi là: Tại sao nó xảy ra và làm thế nào để giải quyết vấn đề này.
THÊM
Here tôi thấy ví dụ sau:
grouped['D'].agg({'result1' : np.sum, 'result2' : np.mean})
Có thể là tôi cũng cần phải sử dụng np
? Nhưng trong trường hợp của tôi python không nhận ra "np". Tôi có nên nhập nó không?
Bạn không cần 'np', nó sẽ hoạt động với' sum' cũ (chỉ kém hiệu quả hơn). numpy được nhập khẩu với gấu trúc (nếu bạn 'nhập gấu trúc như pd' đó là' pd.np') nhưng hầu hết mọi người cũng sẽ nhập nó một cách riêng biệt để thuận tiện. –