首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对熊猫每天出现的次数进行求和

对熊猫每天出现的次数进行求和
EN

Stack Overflow用户
提问于 2013-07-18 01:12:58
回答 3查看 28.6K关注 0票数 31

我在pandas数据框中有一个类似这样的数据集:

代码语言:javascript
复制
                                  score
timestamp                                 
2013-06-29 00:52:28+00:00        -0.420070
2013-06-29 00:51:53+00:00        -0.445720
2013-06-28 16:40:43+00:00         0.508161
2013-06-28 15:10:30+00:00         0.921474
2013-06-28 15:10:17+00:00         0.876710

我需要得到测量次数的计数,所以我寻找的是这样的东西:

代码语言:javascript
复制
                                    count
   timestamp
   2013-06-29                       2
   2013-06-28                       3

我不关心情感栏,我想要的是每天发生的次数。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-18 01:27:32

如果您的timestamp索引是一个DatetimeIndex

代码语言:javascript
复制
import io
import pandas as pd
content = '''\
timestamp  score
2013-06-29 00:52:28+00:00        -0.420070
2013-06-29 00:51:53+00:00        -0.445720
2013-06-28 16:40:43+00:00         0.508161
2013-06-28 15:10:30+00:00         0.921474
2013-06-28 15:10:17+00:00         0.876710
'''

df = pd.read_table(io.BytesIO(content), sep='\s{2,}', parse_dates=[0], index_col=[0])

print(df)

所以df看起来像这样:

代码语言:javascript
复制
                        score
timestamp                    
2013-06-29 00:52:28 -0.420070
2013-06-29 00:51:53 -0.445720
2013-06-28 16:40:43  0.508161
2013-06-28 15:10:30  0.921474
2013-06-28 15:10:17  0.876710

print(df.index)
# <class 'pandas.tseries.index.DatetimeIndex'>

您可以使用:

代码语言:javascript
复制
print(df.groupby(df.index.date).count())

哪一项会产生

代码语言:javascript
复制
            score
2013-06-28      3
2013-06-29      2

请注意parse_dates参数的重要性。如果没有它,索引将只是一个pandas.core.index.Index对象。在这种情况下,您不能使用df.index.date

所以答案取决于type(df.index),您还没有展示它。

票数 30
EN

Stack Overflow用户

发布于 2015-04-09 23:24:57

否则,使用resample函数。

代码语言:javascript
复制
In [419]: df
Out[419]: 
timestamp
2013-06-29 00:52:28   -0.420070
2013-06-29 00:51:53   -0.445720
2013-06-28 16:40:43    0.508161
2013-06-28 15:10:30    0.921474
2013-06-28 15:10:17    0.876710
Name: score, dtype: float64

In [420]: df.resample('D', how={'score':'count'})

Out[420]: 
2013-06-28    3
2013-06-29    2
dtype: int64

更新:使用pandas 0.18+

正如@jbochi指出的那样,使用how重新采样现在已被弃用。请改用:

代码语言:javascript
复制
df.resample('D').apply({'score':'count'})
票数 22
EN

Stack Overflow用户

发布于 2013-07-18 01:21:48

代码语言:javascript
复制
In [145]: df
Out[145]: 
timestamp
2013-06-29 00:52:28   -0.420070
2013-06-29 00:51:53   -0.445720
2013-06-28 16:40:43    0.508161
2013-06-28 15:10:30    0.921474
2013-06-28 15:10:17    0.876710
Name: score, dtype: float64

In [160]: df.groupby(lambda x: x.date).count()
Out[160]: 
2013-06-28    3
2013-06-29    2
dtype: int64
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17706109

复制
相关文章

相似问题

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