我有一个数据框,其中记录了建筑物屋顶表面的特征,每个建筑物都有多个平面,具有面积和形式描述。例如:
df=pd.DataFrame([[1000, 12, 'slope'],
[1000, 10, 'flat'],
[1001, 10, 'slope'],
[1001, 15, 'flat'],
[1001, 7, 'slope']],
index = [1,2,3,4,5],
columns=['building_id', 'area', 'form'],
)
df
building_id area form
1 1000 12 slope
2 1000 10 flat
3 1001 10 slope
4 1001 15 flat
5 1001 7 slope
我希望将行合并,每座建筑物仅有一行,包括总屋顶面积和占该建筑物最大面积的主要屋顶形式 - 即不是最常见的形式,而是最大面积的形式:
df_out
building_id area form
1 1000 22 slope
2 1001 32 slope
我需要类似这样的东西:
group_functions={'area' : ['sum'],
'form' : lambda x: find_predominant(x)}
df_out = df.groupby('building_id').agg(group_functions)
但是find_predominant
需要同时考虑area
和form
的函数:它返回字符串'flat'
或'slope'
,具体取决于哪一个对于该building_id
有最大的面积。
find_predominant
函数是什么?或者有哪个脚本能够达到相同的效果?
find_predominant
。 - cs95find_predominant
是什么 - 这就是问题所在!会进行编辑以增加清晰度。 - doctorer