如何使用pandas将多行组合成一行

San*_*kar 12 python pandas

我需要将多行组合成一行,这将是简单的空间连接

    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
Run Code Online (Sandbox Code Playgroud)

我希望数据帧像这样转换:(空格分隔)tempx值

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

  or
  as a python dict
  {1.5:{picture1 picture555 picture255 picture365 picture112}}
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

 df_test['tempx']=df_test['tempx'].str.cat(sep=' ')
Run Code Online (Sandbox Code Playgroud)

这工作但它结合了所有列中的行,如下所示:

      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
Run Code Online (Sandbox Code Playgroud)

有没有优雅的解决方案?

jez*_*ael 28

你可以使用groupbyapply功能join:

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

  • @sygneto - 使用 `df.groupby('value')['tempx','second_column','third_column'].agg(' '.join).reset_index()` (7认同)
  • @Ivo 使用 `[]` 像 `df.groupby('value')[['tempx','second_column','third_column']].agg(' '.join).reset_index()` (3认同)
  • 非常感谢,这有效! (2认同)
  • 很高兴可以帮到你!祝好运! (2认同)
  • @jezrael 你好,有没有办法合并多个列?我想合并更多列而不是“tempx”,该怎么做?我正在尝试 `df.groupby('value')['tempx','second_column','third_column'].apply(' '.join).reset_index()` 但我只收到分组的列名称 (2认同)