python - Pandas 数据框,将 3 列分组并计算第三列

标签 python python-3.x pandas pandas-groupby

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

这段代码可以实现分组的技巧,但我不知道如何获取计数:

dfs.groupby([dfs['Dato'].dt.date,dfs['Tid'].dt.hour,dfs['Varenavn']])

所以这可能是我的输入:

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

想要的输出:

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

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

最佳答案

这是另一种方法:

df['datetime'] = pd.to_datetime(df['date'] + df['time'].astype(str), format='%m.%d.%Y%H%M')
grouper = df.datetime.dt.strftime('%m.%d.%Y %H-') + (df.datetime.dt.hour+1).astype(str)
dfout = df.groupby(grouper)['article'].value_counts().to_frame('count')
<小时/>

完整示例:

import pandas as pd

data = '''\
      date  time article
01.01.2018   901     Car
01.01.2018   905     Car
01.01.2018   945   Horse
01.01.2018  1005     Car
02.01.2018   900   Horse
02.01.2018   915   Horse
02.01.2018  1050     Car
02.01.2018  1055   Horse'''

fileobj = pd.compat.StringIO(data)
df = pd.read_csv(fileobj, sep='\s+')

df['datetime'] = pd.to_datetime(df['date'] + df['time'].astype(str), format='%m.%d.%Y%H%M')
grouper = df.datetime.dt.strftime('%m.%d.%Y %H-') + (df.datetime.dt.hour+1).astype(str)
dfout = df.groupby(grouper)['article'].value_counts().to_frame('count')
print(dfout)

返回:

                            count
datetime         article         
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

关于python - Pandas 数据框,将 3 列分组并计算第三列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52807109/

相关文章:

python - Pandas 数据帧性能

python - 重试直到没有RuntimeWarning

python - 将模块内的所有函数和类导入到类python中

python - Pandas :如果列 'E' 的值为 'C',则更新列 'x' 的值

python-3.x - 适用于 Python 的逻辑回归和 KNN 等模型的输入格式

python - 为什么 * 在赋值语句和函数调用中的工作方式不同?

python - 对 pandas 进行分组后查找包含所有 nan 的列

Python/Scikit-learn/regressions - 从 pandas Dataframes 到 Scikit 预测

python - Python的代码对象是什么类型?

python - heroku 上的 Django 1.8 部署错误