Pandas 按年份和其他列分组,并根据具体情况计算平均值
我有一个如下所示的数据框Pandas 按年份和其他列分组,并根据具体情况计算平均值,pandas,pandas-groupby,Pandas,Pandas Groupby,我有一个如下所示的数据框 Tenancy_ID Unit_ID End_Date Rental_value 1 A 2012-04-26 10 2 A 2012-08-27 20 3 A 2013-04-27 50 4
Tenancy_ID Unit_ID End_Date Rental_value
1 A 2012-04-26 10
2 A 2012-08-27 20
3 A 2013-04-27 50
4 A 2014-04-27 40
1 B 2011-06-26 10
2 B 2011-09-27 30
3 B 2013-04-27 60
4 B 2015-04-27 80
从上面我想准备下面的数据框架
预期产出:
Unit_ID Avg_2011 Avg_2012 Avg_2013 Avg_2014 Avg_2015
A NaN 15 50 40 NaN
B 20 NaN 60 NaN 80
步骤:
- 单位ID=A,2012年有两份合同,租金值分别为10和20,因此平均值为15
- 2012年平均租金=2012年的平均租金价值
您可以按、上次更改列名和上次数据清理聚合平均值和重塑形状-使用:
这回答了你的问题吗?这与默认答案相同。是否可以同时接受这两个答案?如果是,那怎么办?请引导me@ALI不,到目前为止,这是不可能的:)
#df['End_Date']=pd.to_datetime(df['End_Date']) if dtype of End_Date is not datetime
final = (df.pivot_table('Rental_value','Unit_ID',df['End_Date'].dt.year)
.add_prefix('Avg_').reset_index().rename_axis(None,axis=1))
print(final)
Unit_ID Avg_2011 Avg_2012 Avg_2013 Avg_2014 Avg_2015
0 A NaN 15.0 50.0 40.0 NaN
1 B 20.0 NaN 60.0 NaN 80.0
df1 = (df.groupby(['Unit_ID', df['End_Date'].dt.year])['Rental_value']
.mean()
.unstack()
.add_prefix('Avg_')
.reset_index()
.rename_axis(None, axis=1))
print (df1)
Unit_ID Avg_2011 Avg_2012 Avg_2013 Avg_2014 Avg_2015
0 A NaN 15.0 50.0 40.0 NaN
1 B 20.0 NaN 60.0 NaN 80.0