2つのデータフレームを関連付けて、訪問があったかどうかを確認します。Datetimeのstrのリストを日付時刻に変換する
def visiter(d,visits):
visit = visits[d.start_date:d.end_date]
out = visit[(visit['user_id'] == d.user_id)&(visit['merchant_id']==d.merchant_id)].head(1) #only take the first visit
return (out.index.date.astype('str'))
data['visited_at']= data.apply(lambda x: str(visiter(x,visits)),axis =1)
上記カラムの出力は、次のとおり
0 []
1 []
2 ['2017-04-24']
3 []
4 []
Name: visited_at, dtype: object
pd.to_datetime(data.visited_at, errors = 'coerce')
を用いてカラムを変換は、列全体NAT
を行います。
は、次のような正しい形式で日時を取得するために私ができるコードへの変更があります:2017-05-01 00:00:00
EDIT1: データフレームは、次のようになります。
削除必要Index id user_id merchant_id marketing_email_id start_date end_date email_status sms_status created_at visited_at
0 68989 68990 13277 38 437 2016-04-11 00:00:00 2016-04-16 00:00:00 1 NaN 2016-04-11 11:05:31 []
1 403557 403558 195246 179 2218 2017-06-09 00:00:00 2017-06-12 00:00:00 0 1 2017-06-09 06:01:04 []
2 333381 333382 127359 514 1820 2017-04-24 00:00:00 2017-05-01 00:00:00 0 1 2017-04-24 10:00:33 ['2017-04-24']
3 511815 511816 151653 259 1136 2017-08-05 00:00:00 2017-08-08 00:00:00 0 1 2017-08-05 11:31:19 []
4 167172 167173 51546 32 363 2016-08-05 00:00:00 2016-08-15 00:00:00 1 NaN 2016-08-05 12:00:43 []
まだこれを
リストの文字列ならば、あなたがそれをハックすることができます列全体をNATにします –
別の提案はどうですか? – jezrael
は、多くのリストが空であるため、エラーを返します –