在pandas数据框中将行折叠为一列值

时间:2018-11-07 22:09:07

标签: python sql pandas

如果我有一个这样的数据框,并且每个用户ID的产品页面都不同,并且我想将用户的所有产品页面分组在一起,并用连字符分隔

enter image description here

我希望最终结果如下所示

enter image description here

在pandas或sql中这样做更容易吗?我的数据集目前为7.5MM行,用于更多数据时将增长到一千万。

在熊猫中,我们可以使用series.str.concatenate方法折叠并通过连字符连接吗?

在sql建议中?

2 个答案:

答案 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是数据库接口,而不是数据库本身。在数据库中执行此操作的速度取决于其体系结构。