【问题标题】:How to get the average of a group every 9 years [closed]如何每 9 年获得一个组的平均值 [关闭]
【发布时间】:2017-08-02 18:54:57
【问题描述】:

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

【问题讨论】:

  • 显示一些代码,看看你到目前为止尝试了什么。

标签: pandas average pandas-groupby


【解决方案1】:

我认为您可以先将年份转换为日期时间,然后将 groupbyresample mean。最后转换为years。

#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

【讨论】:

  • 因为我是新用户,所以很难实现。请证明它更适合,因为它给了我错误。非常感谢
  • 好的,没问题。数据是保密的吗?
  • 不,我现在上传
  • 对不起,我现在要睡觉了。但是明天我会尽力帮助你。
  • 但也许只需要通过df = pd.read_csv('file.csv')将文件转换为dataframe
猜你喜欢
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多