如何将列表应用于pandas组

时间:2018-06-02 03:26:11

标签: python python-3.x pandas

我看到了这个问题,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'] |

我该怎么办?

感谢。

1 个答案:

答案 0 :(得分:4)

applylist

的问题是众所周知的
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]