如何在Python中计算十年的列平均值

时间:2017-01-11 06:48:06

标签: python pandas rows mean

Image of dataset

我不确定如何计算给定特定行的列的平均值。 我需要按十年计算Mkt-RF列的平均值,如193001到193912的平均值,依此类推。我需要在2016年之前完成这个任务。

还有什么方法可以将结果放入自己的新数据框中吗?十年(1920,1930)在一列中,每十年的平均值在另一列?

1 个答案:

答案 0 :(得分:0)

我认为3的第一列str[:3]字符需要groupby df = df['Mkt-RF'].groupby(df['Unnamed:0'].str[:3]).mean() mean

df = pd.DataFrame({'Unnamed:0':['192607','192608','193609','193610','193611'],
                   'Mkt-RF':[4,5,6,7,5]})
print (df)   
   Mkt-RF Unnamed:0
0       4    192607
1       5    192608
2       6    193609
3       7    193610
4       5    193611

#rename column
df = df.rename(columns={'Unnamed:0':'YEARMONTH'})

df = df['Mkt-RF'].groupby(df.YEARMONTH.str[:3]).mean().rename('MEAN').reset_index()
df.YEARMONTH = (df.YEARMONTH + '0').astype(int)
print (df)
   YEARMONTH  MEAN
0       1920   4.5
1       1930   6.0

样品:

groupby

另一种解决方案是将to_datetime10转换为year楼层除以df = df.rename(columns={'Unnamed:0':'YEARMONTH'}) df.YEARMONTH = pd.to_datetime(df.YEARMONTH, format='%Y%m') df = df['Mkt-RF'].groupby(df.YEARMONTH.dt.year // 10).mean().rename('MEAN').reset_index() df.YEARMONTH = df.YEARMONTH *10 print (df) YEARMONTH MEAN 0 1920 4.5 1 1930 6.0

1.2.3.4 Clinic
12.13.14.15 Registration
78.79.251.123 Somwhere else with spaces