【问题标题】:Merge multiple rows (having some non string values) with same ID into one delimited row in pandas将具有相同ID的多行(具有一些非字符串值)合并到pandas中的一个分隔行中
【发布时间】:2018-09-20 21:03:33
【问题描述】:

我有一个这样的数据集:

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

等等。

谁能给我一个pythonic的方法吗?

【问题讨论】:

标签: python pandas count logic grouping


【解决方案1】:

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

【讨论】:

  • 我收到此错误:序列项 6:预期的 str 实例,找到浮点数
  • 那么您在Name 列中有不是字符串的项目。我已经更新了答案
  • 太棒了!我没能抓住这个。万分感谢。你也能帮我投票赞成我的问题吗:)
  • 我不会按要求投票。但碰巧,我已经有了。您有一张反对票和一张赞成票,净值为 0。
猜你喜欢
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 2021-11-02
  • 2019-06-11
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
相关资源
最近更新 更多