python - 将具有相同 ID 的多行(具有一些非字符串值)合并到 pandas 中的一个分隔行中

标签 python pandas count logic grouping

我有一个这样的数据集:

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”合并在一起。像这样的事情:

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

等等。

任何人都可以为我提供一种Python式的方法吗?

最佳答案

groupby中使用','.join

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

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

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

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

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

关于python - 将具有相同 ID 的多行(具有一些非字符串值)合并到 pandas 中的一个分隔行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52433293/

相关文章:

python - matplotlib 中的图例问题

python - .div 在 Pandas (Python) 中做什么

python - 如何使用 python 创建有效的 json 文件?

python - python中的展开函数

python - 如何比较两个数据帧并返回有差异的列?

python - Numpy 数组 python : conversion in pandas series

python-2.7 - 如何识别从今天(包括今天)到过去和 future (不包括周末)的三个工作日并将它们放入 Pandas 数据框中?

r - 每个值每年的百分比

python - 计算嵌套列表中的元素

mysql - SQLQuery - 对单个表中按第三个值分组的 2 个值的范围内的值进行计数