1 回答
TA贡献1891条经验 获得超3个赞
代码中性能的主要问题是多个循环。您可以使用 pandas 内置方法将所有循环委托给 numpy 的 C 实现。
例如,使用df_main.groupbysum、重塑和展平索引...然后与 合并df1。
df_temp = df_main.groupby(['users', 'keywords']).sum().unstack()
df_temp.columns = 'total_' + df_temp.columns.map('_'.join) # flatten column index
df1 = df1.merge(df_temp, left_on='USER_ID', right_on='users')
输出
total_quantity_k1 total_quantity_k2 total_quantity_k3 \
users
id1 20.0 NaN NaN
id2 NaN 4.0 NaN
id3 NaN 2.0 4.0
id4 NaN NaN 4.0
total_duration_k1 total_duration_k2 total_duration_k3
users
id1 2.0 NaN NaN
id2 NaN 6.0 NaN
id3 NaN 3.0 2.0
id4 NaN NaN 2.0
USER_ID k1 k2 k3 total_quantity_k1 total_quantity_k2 \
0 id1 1 0 0 20.0 NaN
1 id2 0 1 0 NaN 4.0
2 id3 0 1 1 NaN 2.0
3 id4 0 0 1 NaN NaN
total_quantity_k3 total_duration_k1 total_duration_k2 total_duration_k3
0 NaN 2.0 NaN NaN
1 NaN NaN 6.0 NaN
2 4.0 NaN 3.0 2.0
3 4.0 NaN NaN 2.0
添加回答
举报