지방이의 Data Science Lab

[python] 최근날짜에 따라 데이터 추출 본문

Data Analysis/Python

[python] 최근날짜에 따라 데이터 추출

[지현] 2019. 7. 22. 14:46

import datetime as dt 
kma3['date'] = pd.to_datetime(kma3['date'])
kma3['month'] = pd.DatetimeIndex(kma3['date']).month

 

 

*(1) 유저별로 최근 날짜 데이터만 뽑아보기

# 유저별로 가장 최근 날짜 가져오는건 .max()를 쓰는 것보다 int로 냅뒀다가 정렬을 최근순으로 두고 duplicate제거 해서 맨위에 꺼만 떼오는게 훨씬 빠르다. 

[비추천]

import datetime as dt
df1['SALDT']=df1['SALDT'].astype(str)
df1['SALDT']=pd.to_datetime(df1['SALDT'])

from tqdm import tqdm 

datediff_for_each_cs = {} 

for idx in tqdm(pd.unique(df1.index)): 

    datediff_for_each_cs[idx] = df1.loc[lambda x:x.index==idx]['SALDT'].max()

 

 

[추천]: format을 date으로 변경하지말고, int로 사용

df1=df.sort_values(['COMCSNO','SALDT'], ascending=False)

latest_purchase_index = df1[['COMCSNO']].drop_duplicates().index

latest_purchase_date = df1.loc[lambda x : x.index.isin(latest_purchase_index)]

 


 

 

* (2) 유저별로 최근 방문 후, 6개월 이내 데이터만 뽑아 보고 싶은경우

import datetime as dt

latest_purchase_date['SALDT']=latest_purchase_date['SALDT'].astype(str)

latest_purchase_date['SALDT']=pd.to_datetime(latest_purchase_date['SALDT'])

 

from datetime import date

from dateutil.relativedelta import relativedelta

latest_purchase_date['within6M'= [d.date()-  relativedelta(months=+6)for d in latest_purchase_date['SALDT']]

 

df1 = df1.reset_index(drop=True)

df1 = df1.set_index("COMCSNO")

latest_purchase_date.reset_index(level=0, inplace=True)

latest_purchase_date.head(2)

latest_purchase_date = latest_purchase_date[['COMCSNO''within6M']]

 

df1.reset_index(level=0, inplace=True)

df2 = pd.merge(df1,latest_purchase_date, on="COMCSNO")

 

df2['within6M']=df2['within6M'].astype(str)

df2['within6M']=pd.to_datetime(df2['within6M'])

 

sixM_index=df2['SALDT']>df2['within6M']

df2=df2[sixM_index]

 

Comments