python - 使用 pandas Grouper 按十年开始对 DataFrame 进行分组
问题描述
我有一个从 01-01-1973 到 12-31-2014 的每日观察数据框。
一直在使用 Pandas Grouper,到目前为止,每个频率的一切都运行良好:我想按 70 年代、80 年代、90 年代等十年对它们进行分组。
我试着这样做
import pandas as pd
df.groupby(pd.Grouper(freq = '10Y')).mean()
但是,这会将它们分组为 73-83、83-93 等。
解决方案
pd.cut
还可以指定具有指定开始年份的常规频率。
import pandas as pd
df
date val
0 1970-01-01 00:01:18 1
1 1979-12-31 18:01:01 12
2 1980-01-01 00:00:00 2
3 1989-01-01 00:00:00 3
4 2014-05-06 00:00:00 4
df.groupby(pd.cut(df.date, pd.date_range('1970', '2020', freq='10YS'), right=False)).mean()
# val
#date
#[1970-01-01, 1980-01-01) 6.5
#[1980-01-01, 1990-01-01) 2.5
#[1990-01-01, 2000-01-01) NaN
#[2000-01-01, 2010-01-01) NaN
#[2010-01-01, 2020-01-01) 4.0
推荐阅读
- excel - 从 ssrs 导出到 excel 时无法维护日期格式
- c++ - 返回不同类型的变量
- javascript - 如果全职则按钮颜色为蓝色 但如果兼职按钮颜色为红色
- android - Android:在地图片段上显示用户位置
- verilog - vvp时verilog中的无限循环
- javascript - 如何在内部将每个数组元素传递给javascript中“map”函数内部使用的回调函数
- digital-ocean - 我正在使用 python-digitalocean 在 DO 上创建液滴。我无法将 ssh 密钥附加到液滴
- elasticsearch - Elasticsearch /all/ 请求
- python - 在可能出现重复值的python中从另一个列表中减去一个列表
- ruby-on-rails - 如何为元编程生成的方法自动生成存根