我有以下数据表示一个人使用不同服务的次数:
account site hitCount
243601 auth.svcs.facebook.com 3
243601 auth.svcs.facebook.com 1
243601 respframework.facebook.com 2
243601 respframework.facebook.com 1
243601 auth.svcs.facebook.com 6
243601 auth.svcs.facebook.com 2
243601 pie.prod.facebook.com 1
243601 profile.facebook.com 5
243601 respframework.facebook.com 4
243601 mediasearch.facebook.com 1
243601 pie.prod.facebook.com 2
243601 auth.svcs.facebook.com 1
243601 auth.svcs.facebook.com 1
243601 respframework.facebook.com 1
243601 profile.facebook.com 2
243601 auth.svcs.facebook.com 4
243601 collaborateext.facebook.com 1
243601 auth.svcs.facebook.com 1
243601 auth.svcs.facebook.com 2
243601 auth.svcs.facebook.com 4
243601 www.facebook.com 2
样本数据适用于1位客户。原始数据大约有8万个客户。
我正在按帐户进行分组,以得出点击量的总和,如下所示:
df_hits.groupby(level = 0)['hitCount'].sum().reset_index()
但是,我还需要再创建3个变量,如下所示:
account hitCount profile_hit profile_hit_count non_profile_hit_count
243601 47 1 2 45
我不确定在分组依据期间如何创建其他变量。 有人可以帮我吗?
答案 0 :(得分:1)
您可以使用:
#create new column for check string profile and cast to integers
df_hits =df_hits.assign(profile_hit_count=df_hits['site'].str.contains('profile').astype(int))
#aggregate `sum` twice - for profile_hit_count for count aocurencies
df = df_hits.groupby(level = 0).agg({'hitCount':'sum', 'profile_hit_count':'sum'})
#difference
df['non_profile_hit_count'] = df['hitCount'] - df['profile_hit_count']
#check if not 0 and cast to integer if necessary
df['profile_hit'] = df['profile_hit_count'].ne(0).astype(int)
print (df)
hitCount profile_hit_count non_profile_hit_count profile_hit
account
243601 47 2 45 1