【问题标题】:Python: How to group a List or an Array with numpy?Python:如何使用 numpy 对列表或数组进行分组?
【发布时间】:2021-10-25 00:55:14
【问题描述】:

我卡住了。

我有一个巨大的数据框,看起来像这样:

| Index| Field|
| -------- | -------------- |
| 1| A|
| 1| B|
| 1| C|
| 2| A|
| 2| C|
| 3| A|
| 3| B|

起初我对索引进行分组并连接列“字段” 使用 pandas 和 groupby 命令。

现在我的数据框如下所示:

| Index| Field|
| -------- | -------------- |
| 1| [A, B, C]
| 2| [B, C] 
| 3| [A, B]

下一步是,我想计算整个数据集中存在多少次 [A, B, C]。解决方案应该是这样的:

 | Field | Counts|
| -------- | -------------- |
| [A, B, C]| 222
| [B, C] | 530 
| [A, B] | 400 

因为我把它放在一个列表(或 np 数组)中,我不知道如何实现下一个输出。因为我现在有一个列表/数组。我不能再做一个 pd.groupby 或让我瞎了眼。

任何人都可以给出一些提示或有解决方案如何解决这个问题?

谢谢!

编辑:抱歉编辑不好,stackoverflow 没有让我使用表格格式而不说这是一些代码

【问题讨论】:

  • 根据您的样本数据,您的计数没有意义。

标签: python pandas numpy pandas-groupby


【解决方案1】:

尝试使用 tuple 而不是 list ,然后我们可以使用 value_counts

s = df.groupby('Index')['Field'].agg(tuple)
s.value_counts()
Out[642]: 
(A, B)       1
(A, B, C)    1
(A, C)       1
Name: Field, dtype: int64

【讨论】:

  • 这正是我想要的。谢谢!
猜你喜欢
  • 2015-01-03
  • 2015-04-07
  • 1970-01-01
  • 1970-01-01
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多