0
私は仕事を持っている:私は、ドメインがmvideo.ru
ある文字列、前5以前のユニークなドメインを取得する必要があり パンダ:向上コード
id event_path event_time event_duration
111 vk.com 12-12-2016 15
111 mvideo.ru/phones 12-12-2016 29
よう
データが見えます。
私はコードdef get_domain(df, list_url, list):
for i, url in enumerate(list_url):
get_domain = tldextract.extract(url)
subdomain = get_domain[1] + '.' + get_domain[2]
if subdomain.startswith('.'):
subdomain = subdomain[1:]
elif subdomain.endswith('.'):
subdomain = subdomain[:-1]
elif subdomain.startswith('www.'):
subdomain = subdomain[4:]
list.append(subdomain)
df['domain'] = list
return df
result = pd.DataFrame()
for i, chunk in enumerate(df):
chunk = get_domain(chunk, chunk.event_path.values.tolist(), [])
g = (chunk.domain != chunk.domain.shift()).cumsum()
chunk = (chunk.groupby([chunk.member_id, g], sort=False).agg({'domain': 'first'})
.reset_index(level='domain', drop=True)
.reset_index()
.reindex(columns=chunk.columns))
cols = ['member_id', 'domain']
chunk = chunk[cols]
relevant = chunk[chunk.domain.isin(['utkonos.ru', 'mvideo.ru'])]
for i in relevant.index.values:
previous_5 = chunk.iloc[i-5:i, :]
previous_5 = previous_5.groupby('member_id')['domain'].apply(list)
result = result.append(previous_5)
を使用
私はそれが完璧なコードではないと思うし、それは多くの時間を要します。 どうすれば改善できますか?私は何を使うべきですか、私は何を覚えて読むべきですか?
あなたはいくつかのデータ行と予想される出力を追加できません – Dark
いくつかの_more_データと、いくつかの期待される出力はどうですか? –