【问题标题】:How apply list to a pandas group [duplicate]如何将列表应用于熊猫组[重复]
【发布时间】:2018-11-12 04:12:32
【问题描述】:

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

我该怎么做?

谢谢。

【问题讨论】:

  • 将列表作为 DataFrame 元素并不是很好的做法。您可能想考虑以不同的方式解决您的问题。

标签: python python-3.x pandas


【解决方案1】:

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]

【讨论】:

  • 这很酷...
  • 这在只有数字时很棒,但在列有字符串的情况下,list(x) 会进入另一个层次,并将这些字符串拆分为每个字母的列表。所以'apple','ball'变成a,p,p,l,e,b,a,l,l而不是['apple','ball']
猜你喜欢
  • 2022-10-20
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 2016-11-15
  • 2017-01-20
  • 1970-01-01
  • 2019-02-07
  • 2018-03-27
相关资源
最近更新 更多