[PYTHON] 오라클 리드 / 래그 기능과 동일한 팬더
PYTHON오라클 리드 / 래그 기능과 동일한 팬더
처음에는 팬더를 처음 접했지만 이미 사랑에 빠져 있습니다. Oracle에서 Lag 함수를 구현하려고합니다.
이 DataFrame이 있다고 가정 해 보겠습니다.
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
이것이 오라클 데이터베이스이고 "그룹"열에 의해 그룹화되고 날짜 순으로 지연 기능을 생성하려면이 기능을 쉽게 사용할 수 있습니다.
LAG(Data,1,NULL) OVER (PARTITION BY Group ORDER BY Date ASC) AS Data_lagged
이 결과는 다음 표와 같습니다.
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
팬더에서 날짜를 인덱스로 설정하고 shift 메서드를 사용할 수 있습니다.
db["Data_lagged"] = db.Data.shift(1)
유일한 문제는 이것이 열별로 그룹화되지 않는다는 것입니다. 날짜와 그룹 두 개의 열을 인덱스로 설정하더라도 지연된 열에는 여전히 "5"가 표시됩니다.
팬더에서 리드 및 래그 기능을 구현하는 방법이 있습니까?
해결법
-
==============================
1.groupby / apply (shift) 작업을 수행 할 수 있습니다.
groupby / apply (shift) 작업을 수행 할 수 있습니다.
In [15]: df['Data_lagged'] = df.groupby(['Group'])['Data'].shift(1) In [16]: df Out[16]: Date Group Data Data_lagged 2014-05-14 09:10:00 A 1 NaN 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 NaN 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 [9 rows x 4 columns]
from https://stackoverflow.com/questions/23664877/pandas-equivalent-of-oracle-lead-lag-function by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Keras를 사용하여 모델 출력 w.r.t 가중치의 그래디언트 가져 오기 (0) | 2018.10.20 |
---|---|
[PYTHON] 장고 관리자에서 개체를 만들 때 현재 사용자를 자동 삽입하는 방법? (0) | 2018.10.20 |
[PYTHON] django에서 현지 표준 시간대 가져 오기 (0) | 2018.10.20 |
[PYTHON] Python, Popen 및 select - 프로세스 종료 또는 대기 시간 기다림 (0) | 2018.10.20 |
[PYTHON] Flask 앱에서 대시 앱 실행하기 (0) | 2018.10.20 |