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

Python 如何根据一年的季度找到平均值,python,pandas,dataframe,mean,Python,Pandas,Dataframe,Mean,我想根据一年的季度找出平均值。为了详细说明,我有一个数据框架,它有两列,分别命名为“年”和“收入”。“年”列包含季度值,如(1998-Q1…1998-Q4)。我想找出四分之一的平均值。目前,我有一个可行的解决方案,但如果有更多的时间,它将是不现实的。有更好的解决办法吗 data = { 'year': ['1998-Q1', '1998-Q2', '1998-Q3', '1998-Q4', '1999-Q1', '1999- Q2', '1999-Q3', '1999-Q4']

我想根据一年的季度找出平均值。为了详细说明,我有一个数据框架,它有两列,分别命名为“年”和“收入”。“年”列包含季度值,如(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)

我的方法是将
year
列转换为a,然后使用返回每年的平均值

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
您可以使用
df.groupby(df.year.str[:4])['earning'].mean()