如何用熊猫将多行组合成一行[重复]

Posted

技术标签:

【中文标题】如何用熊猫将多行组合成一行[重复]【英文标题】: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,下一步我想做的是为每个值属性设置一行。请检查预期输出 【参考方案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 ^^,很高兴有你在这里

以上是关于如何用熊猫将多行组合成一行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pandas:如何根据一个公共键将多行数据组合成一行?

如何将两个字符串变量组合成一个多行变量?

如何在 Oracle 中将多行组合成逗号分隔的列表? [复制]

在熊猫中将两个系列组合成一个DataFrame

如何在 SQL Server 2005 中将多行组合成以逗号分隔的列表?

如何用unity做一个合成图片的程序