【发布时间】:2021-10-16 22:00:00
【问题描述】:
我正在使用以下数据框,称为“数据”:
print (data)
local_authority data_2016 data_2017 data_2018
0 Hartlepool 1 4 8
1 Hartlepool 3 6 7
2 Hartlepool 4 8 5
3 Tower Hamlets 3 1 2
4 Tower Hamlets 2 2 3
5 Tower Hamlets 8 0 5
6 Allerdale 27 6 1
7 Allerdale 4 4 1
8 Allerdale 4 3 3
9 Allerdale 6 8 4
我想找出每个地方当局每年的观察结果的平均值。三行代码给出了任何一年的预期结果:
data_2016 = data[['local_authority','data_2016']]
grouped_2016 = data_2016.groupby('local_authority')
means_2016 = grouped_2016.mean()
Print(means_2016)
data_2016
local_authority
Allerdale 10.250000
Hartlepool 2.666667
Tower Hamlets 4.333333
我想生成一个循环来运行此计算并在数据框中为每年生成一个输出。这是我尝试过的代码:
from statistics import mean
def getAverage(df,year):
df = df.copy()
subset = df[f'data_{year}']
groupedby = subset.groupby('local_authority')
average=mean(groupedby)
return average
average_by_year = pd.DataFrame()
for i in [x.split('_')[-1] for x in data.columns]:
average_by_year[i] = [getAverage(data, i)]
这带来了以下错误术语:KeyError: 'data_authority'。
上面代码的问题似乎与线路有关
groupedby = subset.groupby('local_authority')
如果没有这一行,代码将成功计算每一年所有观测值的平均值。我已添加该行以尝试找出每个地方当局在每年内的平均值,但我无法让它发挥作用。
【问题讨论】: