繁体   English   中英

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

[英]Collapsing rows into one column value in pandas dataframe

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

在此处输入图片说明

我希望最终结果如下

在此处输入图片说明

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

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

在SQL建议?

在熊猫中,您可以将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

如果用“轻松”来表示“更快”,请记住SQL是数据库接口,而不是数据库本身。 在数据库中执行此操作的速度取决于其体系结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM