私はデータフレームを持っています
member_id,event_time,event_path,event_duration
19440,"2016-08-09 08:26:48",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1<mpl=default<mplcache=2&emr=1&osid=1#identifier,0
19440,"2016-08-09 08:27:04",ebesucher.ru/surfbar/Ochotona,25
19440,"2016-08-09 08:27:53",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1<mpl=default<mplcache=2&emr=1&osid=1#identifier,0
19440,"2016-08-09 08:27:53",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1<mpl=default<mplcache=2&emr=1&osid=1#identifier,2
19441,"2016-08-09 08:27:55",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1<mpl=default<mplcache=2&emr=1&osid=1#password,1
19441,"2016-08-09 08:27:58",neobux.com/m/l/,0
19441,"2016-08-09 08:27:59",neobux.com/m/l/,0
19441,"2016-08-09 08:28:01",http://new.enjoysurvey.com/ru/survey/649/index/m_e48f6e46bf0d222e2be70bc9067730c423423,11
19441,"2016-08-09 08:28:12",echo.msk.ru ,1
19441,"2016-08-09 08:28:15",neobux.com/m/l/?vl=A206591715C607425417A51CDE023499,2
を使用して新しい列を作成する必要があります。含まれているvisiting
場合new.enjoysurvey.com/ru/survey/649/index/m_e48f6e46bf0d222e2be70bc9067730c4
は、event_path
をevent_path
含み['echo.msk.ru', 'edimdoma.ru', 'glaz.tv', 'vesti.ru']
、次に含む場合はvisiting == 1
、それ以外の場合は-2
です。完了したらmember_id
、member_idに与えますvisiting = 1出力を希望します
member_id,event_time,event_path,event_duration, visiting
19440,"2016-08-09 08:26:48",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1<mpl=default<mplcache=2&emr=1&osid=1#identifier,0,2
19440,"2016-08-09 08:27:04",n,25,2
19440,"2016-08-09 08:27:53",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1<mpl=default<mplcache=2&emr=1&osid=1#identifier,0,2
19440,"2016-08-09 08:27:53",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1<mpl=default<mplcache=2&emr=1&osid=1#identifier,2,2
19441,"2016-08-09 08:27:55",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1<mpl=default<mplcache=2&emr=1&osid=1#password,1,1
19441,"2016-08-09 08:27:58",neobux.com/m/l/,0,1
19441,"2016-08-09 08:27:59",neobux.com/m/l/,0,1
19441,"2016-08-09 08:28:01",http://new.enjoysurvey.com/ru/survey/649/index/m_e48f6e46bf0d222e2be70bc9067730c423423,11,1
19441,"2016-08-09 08:28:12",echo.msk.ru ,1,1
19441,"2016-08-09 08:28:15",neobux.com/m/l/?vl=A206591715C607425417A51CDE023499,2,1
やってみます
df['visiting'] = df.groupby("member_id").event_path.transform(lambda g: (g.isin(["new.enjoysurvey.com/ru/survey/649/index/m_e48f6e46bf0d222e2be70bc9067730c4", 'echo.msk.ru', 'edimdoma.ru', 'glaz.tv', 'vesti.ru']).sum() > 1).astype(int)).replace(0, 2)
しかし、それは量のサイズだけを決定しますevent_path
、しかし私は順序を考慮する必要があります。しかし、これを行う方法がわかりません。
文字列のgroupby.apply()
ループを使用するを考えてみましょうevent_path
。ループを使用すると、リストインデックスで隣接する要素を検索できます。
def findevent(row):
event_paths = row['event_path'].tolist()
row['visiting'] = 2
for i in range(len(event_paths)):
if 'new.enjoysurvey.com/ru/survey/649/index/m_e48f6e46bf0d222e2be70bc9067730c423423' in event_paths[i] and \
event_paths[i+1] in ['echo.msk.ru', 'edimdoma.ru', 'glaz.tv', 'vesti.ru']:
row['visiting'] = 1
break
return(row)
df = df.groupby(['member_id']).apply(findevent)
print(df)
# member_id event_time event_path event_duration visiting
# 0 19440 2016-08-09 08:26:48 accounts.google.com/ServiceLogin?service=mail&... 0 2
# 1 19440 2016-08-09 08:27:04 ebesucher.ru/surfbar/Ochotona 25 2
# 2 19440 2016-08-09 08:27:53 accounts.google.com/ServiceLogin?service=mail&... 0 2
# 3 19440 2016-08-09 08:27:53 accounts.google.com/ServiceLogin?service=mail&... 2 2
# 4 19441 2016-08-09 08:27:55 accounts.google.com/ServiceLogin?service=mail&... 1 1
# 5 19441 2016-08-09 08:27:58 neobux.com/m/l/ 0 1
# 6 19441 2016-08-09 08:27:59 neobux.com/m/l/ 0 1
# 7 19441 2016-08-09 08:28:01 http://new.enjoysurvey.com/ru/survey/649/index... 11 1
# 8 19441 2016-08-09 08:28:12 echo.msk.ru 1 1
# 9 19441 2016-08-09 08:28:15 neobux.com/m/l/?vl=A206591715C607425417A51CDE0... 2 1
**注:最初のURL検索new.enjoysurvey.com/...
は、投稿されたデータに含まれていません。上記は、このURLをコードデモンストレーション用のデータ内のアイテムに変更します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加