gpt4 book ai didi

python - 工作日的 Pandas 石斑鱼?

转载 作者:行者123 更新时间:2023-12-02 06:43:59 29 4
gpt4 key购买 nike

我有一个 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次!

有没有办法按年份和工作日对时间进行分组,以便加快速度?

最佳答案

看来您需要 groupby by DatetimeIndex.yearDatetimeIndex.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

关于python - 工作日的 Pandas 石斑鱼?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44520579/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com