根据一列的唯一值折叠其他列的值

时间:2019-04-17 13:18:23

标签: windows pandas python-2.7 dataframe

我想去:

ind  col1 col2 col3
1    12   333  string1  ...
2    23   444  string2 ...
3    34   555  string1 ...
4    13   667  string2 ...
5    17   888  string3 ...
...  ...  ...  ...   ...

收件人:

ind  col1    col2        col3
1    12,34   333,555  string1  ...
2    13,23   444,667  string2 ...
3    17      888      string3 ...
...  ...  ...  ...   ...

如果我这样做:

df.groupby('col3').agg(','.join)
这将通过使用col3作为索引来修改表的结构。我不希望修改表结构,并得到与上述表相同的结果(包括col3)

          col1     col2
col3                   
string1  12,34  333,555
string2  23,13  444,667
string3     17      888

1 个答案:

答案 0 :(得分:0)

尝试传入arg as_index=False,这会将'col3'保留在聚合的DataFrame中。然后使用df.column进行索引以固定列顺序:

df.astype(str).groupby('col3', as_index=False).agg(','.join)[df.columns]

[出]

    col1     col2     col3
0  12,34  333,555  string1
1  23,13  444,667  string2
2     17      888  string3