python - 使用 pandas Grouper 按十年开始对 DataFrame 进行分组

标签 python pandas group-by pandas-groupby

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

关于python - 使用 pandas Grouper 按十年开始对 DataFrame 进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50145982/

相关文章:

python - 加载django模板时出现异常

python - 在 numpy 中堆叠数组

python - 在 python 中提取 OpenCV 的 Canny 边缘检测的有序 xy 坐标

考虑到夏令时,MySQL 查询按一天中的小时对结果进行分组

python - 为什么带有 Python 扩展的 Visual Studio Code 无法正确导入 "fractions"库?

python - 使用 pandas 向量函数查找匹配值对

python - Python 中的字符串压缩

Python - 比较运算符超过 2 个条件

MySql GROUP BY + IN 性能

mysql - 分组后消除某些重复的行