我有一个名为EPI的数据框。 它看起来像这样:
它有104个国家。每个国家都有从1991年到2008年(18年)的价值。 我想平均每9年一次。因此,每个国家将有2个平均值。
编辑: 这是我用来获得平均值的命令。但它给了我一个每个国家的价值(平均值)。
<div class="example">
<h1>This is example datepicker</h1>
<input type="text" placeholder="Chekin" id="checkin">
</div>
<div class="project">
<h1>And this is the project monthPicker</h1>
<input type="text" id="noIconDemo" />
</div>
但我需要得到一个国家每9年的平均值。
请注意我是r的新用户,我在软件包安装中找不到pandas!
答案 0 :(得分:0)
我认为您可以先将年份转换为日期时间,然后将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