首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas:只连接分组数据帧中选定列中的值的有效方法

Pandas:只连接分组数据帧中选定列中的值的有效方法
EN

Stack Overflow用户
提问于 2017-02-04 03:46:26
回答 1查看 54关注 0票数 1

我有一个df,所以

代码语言:javascript
复制
   LAST_MOD_DATE       ID    TITLE          TXT_ID             TXT  
0  1486047205463        2    TITLE-2        7                  ABC   
1  1486047205463        2    TITLE-2        5                  XYZ   
2  1486047205463        2    TITLE-2        6                  MNQ 

我想按ID对其进行分组,以便将其展平为单行。具有不同值的字段TXT_IDTXT将合并为一个具有逗号分隔值的字段。因此,如下所示:

代码语言:javascript
复制
ID 
2  1486047205463     TITLE-2        7, 5, 6          ABC, XYZ, MNQ

我只能通过以下方式获取单个列:

代码语言:javascript
复制
df.groupby('ID')['TXT'].apply(lambda x:', '.join(x))

但是如何在整个df上这样做,以便我可以有选择地连接一些列,同时只选择相同组中其他列的顶值。现在,我通过将这些值聚合为一个集合,然后为某些列扩展该集合来完成此操作。但这似乎并不是很有效

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-04 04:16:35

使用agg并提供要应用于每列的函数。这里我给你一个混合的例子,我只对'ID‘进行分组,以说明如何获取'TITLE’上的第一个元素,但你可以针对它对你的样本进行分组(这可能不是你有的一般情况:

代码语言:javascript
复制
df.groupby('ID').agg({'TITLE':'first', 
                      'TXT_ID':lambda x:', '.join(x),
                      'TXT':lambda x:', '.join(x)})
Out[288]: 
      TITLE   TXT_ID            TXT
ID                                 
2   TITLE-2  7, 5, 6  ABC, XYZ, MNQ
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42031919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档