Đầu tiên tôi mới tham gia gấu trúc, nhưng tôi đã yêu nó. Tôi đang cố gắng thực hiện tương đương với hàm Lag từ Oracle.Pandas tương đương với chức năng Oracle Lead/Lag
Hãy giả sử bạn có DataFrame này:
Date Group Data
2014-05-14 09:10:00 A 1
2014-05-14 09:20:00 A 2
2014-05-14 09:30:00 A 3
2014-05-14 09:40:00 A 4
2014-05-14 09:50:00 A 5
2014-05-14 10:00:00 B 1
2014-05-14 10:10:00 B 2
2014-05-14 10:20:00 B 3
2014-05-14 10:30:00 B 4
Nếu đây là một cơ sở dữ liệu oracle và tôi muốn tạo một hàm lag nhóm theo cột "Nhóm" và sắp xếp theo ngày tôi có thể dễ dàng sử dụng chức năng này :
LAG(Data,1,NULL) OVER (PARTITION BY Group ORDER BY Date ASC) AS Data_lagged
này sẽ cho kết quả trong bảng sau:
Date Group Data Data lagged
2014-05-14 09:10:00 A 1 Null
2014-05-14 09:20:00 A 2 1
2014-05-14 09:30:00 A 3 2
2014-05-14 09:40:00 A 4 3
2014-05-14 09:50:00 A 5 4
2014-05-14 10:00:00 B 1 Null
2014-05-14 10:10:00 B 2 1
2014-05-14 10:20:00 B 3 2
2014-05-14 10:30:00 B 4 3
Trong gấu trúc, tôi có thể đặt ngày thành chỉ mục và sử dụng phương pháp thay đổi:
db["Data_lagged"] = db.Data.shift(1)
Vấn đề duy nhất là điều này không được nhóm theo cột. Ngay cả khi tôi đặt hai cột Ngày và Nhóm làm chỉ mục, tôi vẫn sẽ nhận được "5" trong cột bị trễ.
Có cách nào để thực hiện tương đương với hàm Lead và lag trong Pandas không?
Thank you very much !! Đây chính xác là những gì tôi cần. – gcarmiol