我有一个如下所示的数据框
ID Sector Year Usage Rent
1 SE1 2017 R 100
2 SE1 2017 C 120
3 SE1 2017 R 150
4 SE1 2017 R 110
5 SE1 2017 C 200
6 SE1 2018 R 100
7 SE1 2018 R 120
8 SE1 2018 R 100
9 SE1 2018 C 100
10 SE1 2018 C 100
1 SE2 2017 R 100
2 SE2 2017 C 120
3 SE2 2017 R 150
4 SE2 2017 R 110
5 SE2 2017 C 200
6 SE2 2018 R 100
7 SE2 2018 R 120
8 SE2 2018 R 100
9 SE2 2018 C 100
10 SE2 2018 C 100
11 SE2 2018 C 100
在上面的数据框中,我想在下面的数据框中进行准备
预期产量
Sector Year Usage N_of_contract Mean_Rent Q1 Q2 Q3 Std
SE1 2017 R 3
SE1 2017 C 2
SE1 2018 R
SE1 2018 C
SE2 2017 R
SE2 2017 C
SE2 2018 R
SE2 2018 C
N_of_contract =这种组合发生的次数,只是计数
平均租金=这种组合的平均租金
Q1 = Q1租金,依此类推
Std =租金的标准差。
注意:我无法编写某些列的值,因为我无法计算该值。
答案 0 :(得分:1)
将GroupBy.describe
与DataFrame.drop
一起使用:
new_df = (df.groupby(['Sector','Year','Usage'])['Rent']
.describe()
.drop(columns = ['min','max'])
.reset_index()
)
print(new_df)
Sector Year Usage count mean std 25% 50% 75%
0 SE1 2017 C 2.0 160.000000 56.568542 140.0 160.0 180.0
1 SE1 2017 R 3.0 120.000000 26.457513 105.0 110.0 130.0
2 SE1 2018 C 2.0 100.000000 0.000000 100.0 100.0 100.0
3 SE1 2018 R 3.0 106.666667 11.547005 100.0 100.0 110.0
4 SE2 2017 C 2.0 160.000000 56.568542 140.0 160.0 180.0
5 SE2 2017 R 3.0 120.000000 26.457513 105.0 110.0 130.0
6 SE2 2018 C 3.0 100.000000 0.000000 100.0 100.0 100.0
7 SE2 2018 R 3.0 106.666667 11.547005 100.0 100.0 110.0