我有一个如下表(数据框)
--------------------------
|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 |
应该保留代码列表的顺序。任何帮助都非常感激
答案 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