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