如果我有一个这样的数据框,并且每个用户ID的产品页面都不同,并且我想将用户的所有产品页面分组在一起,并用连字符分隔
我希望最终结果如下所示
在pandas或sql中这样做更容易吗?我的数据集目前为7.5MM行,用于更多数据时将增长到一千万。
在熊猫中,我们可以使用series.str.concatenate方法折叠并通过连字符连接吗?
在sql建议中?
答案 0 :(得分:0)
在熊猫中,您可以将groupby
与匿名功能一起使用:
>>> df = pd.DataFrame([(5, 'product'), (5, 'product'), (5, 'home'), (4, 'product'), (4, 'home')], columns=['user_id', 'page_category'])
>>> df
user_id page_category
0 5 product
1 5 product
2 5 home
3 4 product
4 4 home
>>> df.groupby('user_id')['page_category'].apply(lambda x: '-'.join(x))
user_id
4 product-home
5 product-product-home
Name: page_category, dtype: object
答案 1 :(得分:0)
如果用“轻松”来表示“更快”,请记住SQL是数据库接口,而不是数据库本身。在数据库中执行此操作的速度取决于其体系结构。