Python 如何根据一年的季度找到平均值
我想根据一年的季度找出平均值。为了详细说明,我有一个数据框架,它有两列,分别命名为“年”和“收入”。“年”列包含季度值,如(1998-Q1…1998-Q4)。我想找出四分之一的平均值。目前,我有一个可行的解决方案,但如果有更多的时间,它将是不现实的。有更好的解决办法吗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']
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()