我想根据一年中的季度找到平均值。详细来说,我有一个包含两列的数据框,分别命名为“ 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)
答案 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