按ID分组类别python

时间:2018-10-04 19:39:58

标签: python python-3.x pandas dataframe data-structures

我有一个如下表(数据框)

--------------------------
|ID    | code  | happened|
--------------------------
|  1   | A     |    1    |
|  1   | B     |    1    |
|  1   | A     |    1    |
|  2   | A     |    0    |
|  2   | c     |    0    |
|  2   | D     |    0    |
|  3   | E     |    1    |
|  3   | E     |    1    |

happened的{​​{1}}不变

ID

-------------------------- |ID | list | happened | --------------------------- | 1 | A,B,A| 1 | | 2 | A,C,D | 0 | | 3 | E, E | 1 | 应该保留代码列表的顺序。任何帮助都非常感激

2 个答案:

答案 0 :(得分:3)

使用agg

df.groupby('ID',as_index=False).agg({'code': lambda x : ','.join(x),'happened':'first'})
Out[911]: 
   ID   code  happened
0   1  A,B,A         1
1   2  A,c,D         0
2   3    E,E         1

答案 1 :(得分:1)

使用pivot_table的方法:

(df.pivot_table(
    index='ID', values='code', aggfunc=','.join).join(df.groupby('ID').happened.first()))

     code  happened
ID
1   A,B,A         1
2   A,c,D         0
3     E,E         1