0
我有一個任務:熊貓:提高代碼
數據看起來像
id event_path event_time event_duration
111 vk.com 12-12-2016 15
111 mvideo.ru/phones 12-12-2016 29
我需要的字符串,其中域是mvideo.ru
之前得到5前一個唯一域。
我使用的代碼
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_數據以及一些預期的輸出。 –