如何根据一年的季度找到平均值

时间:2019-02-08 02:36:09

标签: python pandas dataframe mean

我想根据一年中的季度找到平均值。详细来说,我有一个包含两列的数据框,分别命名为“ year”和“ earning”。 “年”列包含诸如(1998-Q1 ... 1998-Q4)之类的季度值。我想找到这些宿舍的平均值。目前,我有一个可行的解决方案,但是如果还有更多的年头,它将是不切实际的。有更好的解决方案吗?

data = {
    'year': ['1998-Q1', '1998-Q2', '1998-Q3', '1998-Q4', '1999-Q1', '1999- 
    Q2', '1999-Q3', '1999-Q4'],
'earning': [2800, 2544, 2511, 3104, 2793, 2570,  2600, 3287]
}

df = pd.DataFrame(data)

print(df)

# What if there are more years? For example 2000, 2001, 2002 .... 2018.
df_1998 = df.iloc[:4].mean()
df_1999 = df.iloc[4:].mean()

print(df_1998)
print(df_1999)

1 个答案:

答案 0 :(得分:1)

我的方法是将year列转换为PeriodIndex,然后使用pd.Grouper返回每年的平均值。

df['year'] = pd.to_datetime(df['year']).dt.to_period('Q')
df.set_index('year', drop=True, inplace=True)
df.groupby(pd.Grouper(freq='A')).mean()  # freq='A' specifies yearly frequency where year-end is calendar year-end

在一个数据框内全部输出每年的平均收入:

        earning
year    
1998    2739.75
1999    2812.50