首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要对熊猫的数据进行汇总计数(rowid,colid)

需要对熊猫的数据进行汇总计数(rowid,colid)
EN

Stack Overflow用户
提问于 2015-01-29 07:15:45
回答 1查看 252关注 0票数 1

我一直在努力改变这个

代码语言:javascript
复制
| row_id | col_id |
|--------|--------|
|   1    |   23   |
|   4    |   45   |
|  ...   |  ...   |
|   1    |   23   |
|  ...   |  ...   |
|   4    |   45   |
|  ...   |  ...   |
|   4    |   45   |
|  ...   |  ...   |

投入到这个

代码语言:javascript
复制
| row_id | col_id |  count  |
|--------|--------|---------|
|   1    |   23   |    2    |
|   4    |   45   |    3    |
|  ...   |  ...   |   ...   |

因此,所有(row_i,col_j)事件都被添加到“count”列中。请注意,在任何一种情况下,row_id和column_id都不会是唯一的。

现在成功到现在为止,至少如果我想保持效率。我可以对每一对进行迭代,并将发生的次数加起来,但是熊猫必须有一个更简单的方法--或者说这件事上很难处理。

谢谢!

编辑1:

正如@ suggested建议的那样,我尝试了以下方法

代码语言:javascript
复制
# I use django-pandas
rdf = Record.objects.to_dataframe(['row_id', 'column_id'])
_ = rdf.groupby(['row_id', 'column_id'])['row_id'].count().head(20)
_.head(10)

而那输出

代码语言:javascript
复制
    row_id  column_id
1       108          1
        168          1
        218          1
        398          2
        422          1
10      35           2
        355          1
        489          1
100     352          1
        366          1
Name: row_id, dtype: int64

这似乎没问题。但是它是一个Series对象,我不知道如何将它转换为包含所需的三列的dataframe。就像看上去的那样,熊猫是菜鸟。有小费吗?

再次感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-29 07:29:16

您可以按列a和b进行分组,并按对象对组调用count

代码语言:javascript
复制
df =pd.DataFrame({'A':[1,4,1,4,4], 'B':[23,45,23,45,45]})
df.groupby(['A','B'])['A'].count()

返回:

代码语言:javascript
复制
A  B 
1  23    2
4  45    3

编辑以使答案更加明确的

若要将series返回到具有名为count的列的dataframe

代码语言:javascript
复制
_ = df.groupby(['A','B'])['A'].count()

该系列的名称变为列名:

代码语言:javascript
复制
_.name = 'Count'

重置索引,将多个索引提升为列,并将系列转换为数据:

代码语言:javascript
复制
df =_.reset_index()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28208958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档