如何得到一组每9年的平均值
How to get the average of a group every 9 years
我有一个名为 EPI 的数据框。
它看起来像这样:
它有 104 个国家。每个国家/地区都有从 1991 年到 2008 年(18 年)的值。
我想平均每 9 年一次。因此,每个国家/地区将有 2 个平均值。
编辑:
这是我用来获取平均值的命令。但它给了我每个国家的一个值(平均值)。
aver_economic_growth <- aggregate( HDI_growth_rate[,3], list(economic_growth$cname), mean, na.rm=TRUE)
但我需要获得一个国家/地区每 9 年的平均值。
请注意,我是 r 的新用户,我没有在安装包中找到 pandas!
我认为您可以先将年份转换为日期时间,然后 groupby
使用 resample
mean
。最后转换为 year
s.
#sample data for testing
np.random.seed(100)
start = pd.to_datetime('1991-02-24')
rng = pd.date_range(start, periods=36, freq='A')
df = pd.DataFrame({'cname': ['Albania'] * 18 + ['Argentina'] * 18,
'year': rng.year,
'rgdpna.pop': np.random.choice([0,1,2], size=36)})
#print (df)
df.year = pd.to_datetime(df.year, format='%Y')
df1 = df.set_index('year').groupby('cname').resample('9A',closed='left').mean().reset_index()
df1.year = df1.year.dt.year
print (df1)
cname year rgdpna.pop
0 Albania 1999 1.000000
1 Albania 2008 1.000000
2 Argentina 2017 0.888889
3 Argentina 2026 0.888889
我有一个名为 EPI 的数据框。 它看起来像这样:
它有 104 个国家。每个国家/地区都有从 1991 年到 2008 年(18 年)的值。 我想平均每 9 年一次。因此,每个国家/地区将有 2 个平均值。
编辑: 这是我用来获取平均值的命令。但它给了我每个国家的一个值(平均值)。
aver_economic_growth <- aggregate( HDI_growth_rate[,3], list(economic_growth$cname), mean, na.rm=TRUE)
但我需要获得一个国家/地区每 9 年的平均值。
请注意,我是 r 的新用户,我没有在安装包中找到 pandas!
我认为您可以先将年份转换为日期时间,然后 groupby
使用 resample
mean
。最后转换为 year
s.
#sample data for testing
np.random.seed(100)
start = pd.to_datetime('1991-02-24')
rng = pd.date_range(start, periods=36, freq='A')
df = pd.DataFrame({'cname': ['Albania'] * 18 + ['Argentina'] * 18,
'year': rng.year,
'rgdpna.pop': np.random.choice([0,1,2], size=36)})
#print (df)
df.year = pd.to_datetime(df.year, format='%Y')
df1 = df.set_index('year').groupby('cname').resample('9A',closed='left').mean().reset_index()
df1.year = df1.year.dt.year
print (df1)
cname year rgdpna.pop
0 Albania 1999 1.000000
1 Albania 2008 1.000000
2 Argentina 2017 0.888889
3 Argentina 2026 0.888889