【问题标题】:How to combine multiple rows into a single row with pandas [duplicate]如何用熊猫将多行组合成一行[重复]
【发布时间】:2016-07-23 09:49:16
【问题描述】:

我需要将多行合并为一行,这将是简单的空格连接

    View of my dataframe:
  tempx        value
0  picture1         1.5
1  picture555       1.5
2  picture255       1.5
3  picture365       1.5
4  picture112       1.5

我希望像这样转换数据框:(空格分隔) 温度值

  Expected output:
  tempx                                                       value
  0     picture1 picture555 picture255 picture365 picture112  1.5

  or
  as a python dict
  {1.5:{picture1 picture555 picture255 picture365 picture112}}

我尝试过的:

 df_test['tempx']=df_test['tempx'].str.cat(sep=' ')

这可行,但它组合了所有列中的行,如下所示:

      tempx        value
0  picture1 picture555 picture255 picture365 picture112 1.5
1  picture1 picture555 picture255 picture365 picture112 1.5
2  picture1 picture555 picture255 picture365 picture112 1.5
3  picture1 picture555 picture255 picture365 picture112 1.5
4  picture1 picture555 picture255 picture365 picture112 1.5

有什么优雅的解决方案吗?

【问题讨论】:

  • 如果有基于值列有条件组合的解决方案
  • 您的预期输出是什么,您可以编辑并举例说明您的问题吗?是否要按值列“分组”,以便在每个值中加入图片名称?
  • 我已经使用 pandas 应用了 grouby,下一步我想做的是为每个值属性设置一行。请检查预期输出

标签: python pandas


【解决方案1】:

你可以使用groupbyapply函数join

print df.groupby('value')['tempx'].apply(' '.join).reset_index()
   value                                              tempx
0    1.5  picture1 picture555 picture255 picture365 pict...

【讨论】:

  • 非常感谢,成功了!
  • 很高兴能帮到你!祝你好运!
  • @jezrael 嗨,有没有办法合并多个列?而不是tempx 我还想合并更多的列怎么做?我正在尝试df.groupby('value')['tempx','second_column','third_column'].apply(' '.join).reset_index(),但我只收到分组的列名称
  • @sygneto - 使用df.groupby('value')['tempx','second_column','third_column'].agg(' '.join).reset_index()
  • 谢谢,我又忘记了.agg ^^,很高兴有你在这里
猜你喜欢
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 1970-01-01
  • 2021-11-13
  • 2018-12-20
  • 2019-11-03
  • 2021-11-22
相关资源
最近更新 更多