平日的 pandas 石斑鱼? [英] Pandas Grouper by weekday?

查看:123
本文介绍了平日的 pandas 石斑鱼?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个pandas数据框,索引是从2007年到2017年的日期.

我想计算每年的每个工作日的平均值.我可以按年份分组:

groups = df.groupby(TimeGrouper('A'))
years = DataFrame()
for name, group in groups:
   years[name.year] = group.values

这是我创建新数据框(年)的方式,其中在每一列中我获取时间序列的每一年. 如果我想查看每年的统计数据(例如平均值):

print(years.mean())

但是现在我想将每年的每周的每一天分开,以便获得当时所有时间的每个工作日的平均值.

我唯一知道的是:

year=df[(df.index.year==2007)]

day_week=df[(df.index.weekday==2)]

问题是我必须在一周中的一天更改7次,然后重复11年(我的时间序列从2007年开始到2017年结束),所以我必须做77次! /p>

是否有一种方法可以按年和周日对时间进行分组,以使其更快?

解决方案

似乎您需要 解决方案

It seems you need groupby by DatetimeIndex.year with DatetimeIndex.weekday:

rng = pd.date_range('2017-04-03', periods=10, freq='10M')
df = pd.DataFrame({'a': range(10)}, index=rng)  
print (df)
            a
2017-04-30  0
2018-02-28  1
2018-12-31  2
2019-10-31  3
2020-08-31  4
2021-06-30  5
2022-04-30  6
2023-02-28  7
2023-12-31  8
2024-10-31  9

df1 = df.groupby([df.index.year, df.index.weekday]).mean()
print (df1)
        a
2017 6  0
2018 0  2
     2  1
2019 3  3
2020 0  4
2021 2  5
2022 5  6
2023 1  7
     6  8
2024 3  9


df1 = df.groupby([df.index.year, df.index.weekday]).mean().reset_index()
df1 = df1.rename(columns={'level_0':'years','level_1':'weekdays'})
print (df1)
   years  weekdays  a
0   2017         6  0
1   2018         0  2
2   2018         2  1
3   2019         3  3
4   2020         0  4
5   2021         2  5
6   2022         5  6
7   2023         1  7
8   2023         6  8
9   2024         3  9

这篇关于平日的 pandas 石斑鱼?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆