tak's data blog
데이터프레임 행간의 계산 본문
보통 고객이 이탈할 때, 재구매를 할 때 등 기간을 구하기 위해 고유한 인덱스를 기준으로 정렬해 위아래의 차이로 계산한다.
여태까지 아래와 같이 비효율적이게 for문으로 조건을 주어 해결했었다.
새로운 데이터프레임, 고유한 유저별 데이터프레임을 생성해 계산한 후 concat하는 방식으로 진행했었다...
from tqdm import tqdm
reorder_day = pd.DataFrame()
de_lp['reorder_day'] = 0
u_list = de_lp[de_lp['reorder'] == 'O']['cust'].unique()
for i in tqdm(u_list):
reorder_df = de_lp[de_lp['cust'] == i]
reorder_df[['reorder_day']] = reorder_df[['date']].diff()
reorder_day = pd.concat([reorder_day, reorder_df])
reorder_day['reorder_day'] = reorder_day['reorder_day'].apply(lambda x: x.days)
역시 구글링이란 위대한 것 같다. groupby.diff를 이용해 바로 행간의 계산을 할 수 있다는 점을 배웠다.
이렇게 하면 좀 더 빠르게 해결이 가능하다. groupby로 응용할 생각을 못했다니 ㅠ
de_lp['reorder_day'] = de_lp.groupby(['cust'])['date'].diff()
'이것저것' 카테고리의 다른 글
푸리에 변환(fourier transform) (0) | 2023.02.25 |
---|---|
효율적인 코드 작성(고객별 누적 주문횟수 계산) (0) | 2022.08.02 |