0
「開始日」と「終了日」の顧客リストがあります。任意の期間、私の目標は、私が活動している顧客の数を見つけることです。顧客の開始日がxより前で、終了日がxから後である場合、顧客はアクティブです。私はこれのブルートフォース版を書いた:pandas月末のリストの日付間のカウントを見つける
from datetime import datetime
import pandas as pd
#dates of interest
dates = ['2016-01-31','2016-02-29','2016-03-31','2016-04-30','2016-05-31']
dates = [datetime.strptime(x, '%Y-%m-%d') for x in dates]
#sample records
df = pd.DataFrame([['A','2016-01-01','2016-04-23'],['B','2016-02-05','2016-04-30'],['C','2016-02-02','2016-05-25']],columns = ['customerId','startDate','endDate'])
df['startDate'] = pd.to_datetime(df['startDate'])
df['endDate'] = pd.to_datetime(df['endDate'])
output = []
#is there a better way to do this?
for currDate in dates:
record_count = len(df[(df['startDate']<= currDate) & (df['endDate']>= currDate)])
output.append([currDate,record_count])
output = pd.DataFrame(output, columns = ['date','active count'])
各興味のある日付の間にアクティブなお客様の数を見つける良い方法はありますか?今はすべての日程を繰り返していますが、それは私には非常に「ピジョンソニック」な感じはしません。
ご意見やご協力をいただければ幸いです。
おかげで - 私も適用を避けることを望んでいた、また遅い建設。可能であればベクトル化する方法を考えようとしています。 – flyingmeatball