pandas 实现按id分组拼接其他字段的string

两种方式

apply()函数

agg()函数

代码及结果如下

import pandas as pd
data = pd.DataFrame({'id': [10001, 10001, 10002, 10002, 10002], 
                     'skills': ['python', 'java', 'python', 'C++', 'java']})
In [7]: data
Out[7]:
      id  skills
0  10001  python
1  10001    java
2  10002  python
3  10002     C++
4  10002    java

In [10]: data.groupby('id')['skills'].apply(lambda x: x.str.cat(sep='|'))
Out[10]:
id
10001        python|java
10002    python|C++|java
Name: skills, dtype: object

In [11]: data.groupby('id')['skills'].apply(lambda x: x.str.cat(sep='|')).reset_index()
Out[11]:
      id           skills
0  10001      python|java
1  10002  python|C++|java

In [13]: data.groupby('id').agg({'skills': lambda x: x.str.cat(sep='|')})
Out[13]:
                skills
id
10001      python|java
10002  python|C++|java

In [14]: data.groupby('id').agg({'skills': lambda x: x.str.cat(sep='|')}).reset_index()
Out[14]:
      id           skills
0  10001      python|java
1  10002  python|C++|java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值