首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas数据帧,对3列进行分组并计算第三列

Pandas数据帧,对3列进行分组并计算第三列
EN

Stack Overflow用户
提问于 2018-10-15 05:07:18
回答 1查看 43关注 0票数 1

我尝试按日期、时间和文章这3列对数据帧进行分组,并返回一个对象,其中包含日期、时间和文章的分组,以及每个时间(小时)内每篇文章的数量。

这段代码完成了分组的工作,但我不知道如何也获得计数:

代码语言:javascript
复制
dfs.groupby([dfs['Dato'].dt.date,dfs['Tid'].dt.hour,dfs['Varenavn']])

所以这可能是我的输入:

代码语言:javascript
复制
01.01.2018   0901  Car
01.01.2018   0905  Car
01.01.2018   0945  Horse
01.01.2018   1005  Car
02.01.2018   0900  Horse
02.01.2018   0915  Horse
02.01.2018   1050  Car
02.01.2018   1055  Horse

想要的输出:

代码语言:javascript
复制
01.01.2018 09-10 Car   2
                 Horse 1
01.01.2018 10-11 Car   1
02.01.2018 09-10 Horse 2 
02.01.2018 10-11 Car   1 
                 Horse 1

我的总体目标是从包含每个售出商品的数据框中,找出每天每小时售出的商品数量、时间和日期

EN

回答 1

Stack Overflow用户

发布于 2018-10-15 05:20:05

假设您的OG数据帧中包含DatoTidVarenavn列,请尝试执行以下操作:

代码语言:javascript
复制
df['datetime'] = df['Dato'] + str(' ') + df['Tid']
df['datetime'] = pd.to_datetime(df['datetime'], format = '%m.%d.%Y %H%M')
df.groupby([pd.Grouper(key = 'datetime', freq = 'H'), 'Varenavn'])['Varenavn'].count()

输出:

代码语言:javascript
复制
datetime             Varenavn  
2018-01-01 09:00:00  Car      2
                     Horse    1
2018-01-01 10:00:00  Car      1
2018-02-01 09:00:00  Horse    2
2018-02-01 10:00:00  Car      1
                     Horse    1

...implicitly假设时间戳中的小时是开始时间。您可以对datetime重新编制索引并使用它,以获得所需的格式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52807109

复制
相关文章

相似问题

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