我看到了这个问题,grouping rows in list in pandas groupby
但我想要应用list
的列数超过两列。
输入:
df(pd.DataFrame)
| index | c1 | c2 | c3 |
|-------|----|----|----|
| 1 | A | 6 | 1 |
| 2 | A | 5 | 2 |
| 3 | B | 4 | 3 |
| 4 | B | 3 | 4 |
| 5 | B | 2 | 5 |
| 6 | C | 1 | 6 |
预期产出:
| c1 | c2 | c3 |
|----|---------|---------|
| A | [6,5] | [1,2] |
| B | [4,3,2] | [3,4,5] |
| C | [1] | [6] |
我也试过
df.groupby('c1').apply(list)
但结果如下。
| c1 | |
|----|-------------|
| A | ['c2','c3'] |
| B | ['c2','c3'] |
| C | ['c2','c3'] |
我该怎么办?
感谢。
答案 0 :(得分:4)
apply
与list
df.groupby('c1').agg(lambda x : list(x))
Out[15]:
c2 c3
c1
A [6, 5] [1, 2]
B [4, 3, 2] [3, 4, 5]
C [1] [6]