将具有相同ID的多行(具有一些非字符串值)合并到 pandas 的一个定界行中 [英] Merge multiple rows (having some non string values) with same ID into one delimited row in pandas

查看:92
本文介绍了将具有相同ID的多行(具有一些非字符串值)合并到 pandas 的一个定界行中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个像这样的数据集:

I have a dataset like this:

ID    Name
 1       a
 1       b
 1       2
 1       3
 2      er
 2     get
 2  better
 3     123
 3    cold
 3    warm
 3   sweet
 3    heat

,我想将此数据分组在一起,以便使用定界符将具有相同"id"的数据列"name"合并在一起.像这样:

and I want to group together this data such that data column "name" having same "id" is merged together using a delimiter. Something like this:

ID                      Name
 1                   a,b,2,3
 2             er,get,better
 3  123,cold,warm,sweet,heat

以此类推.

任何人都可以为我提供一种执行此操作的pythonic方法吗?

Can anyone provide me a pythonic way of doing this?

推荐答案

groupby

df.groupby('ID').Name.apply(','.join)

ID
1                     a,b,c,d
2               er,get,better
3    hot,cold,warm,sweet,heat
Name: Name, dtype: object


如果您需要相同的两列,请重置索引


Reset the index if you need those same two columns

df.groupby('ID').Name.apply(','.join).reset_index()

   ID                      Name
0   1                   a,b,c,d
1   2             er,get,better
2   3  hot,cold,warm,sweet,heat

如果由于某种原因您有非字符串项目

If for some reason you have non string items

df.assign(Name=df.Name.astype(str)).groupby('ID').Name.apply(','.join).reset_index()

   ID                      Name
0   1                   a,b,c,d
1   2             er,get,better
2   3  hot,cold,warm,sweet,heat

这篇关于将具有相同ID的多行(具有一些非字符串值)合并到 pandas 的一个定界行中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆