You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas计算各楼层房间的面积占比(求简洁实现)

问题

我有如下结构的Pandas DataFrame df:

Floor         Room  Area
0      1  Living room    25
1      1      Kitchen    20
2      1      Bedroom    15
3      2     Bathroom    21
4      2      Bedroom    14

需要新增一列floor_share,表示该房间面积在对应楼层的占比,最终效果如下(示例中Area值为适配占比展示调整后的结果):

Floor         Room  Area  floor_share
0      1  Living room    18         0.30
1      1      Kitchen    18         0.30
2      1      Bedroom    24         0.40
3      2     Bathroom    10         0.67         
4      2      Bedroom    20         0.33

目前我需要先分组计算楼层总面积,再遍历行计算占比,希望用更简洁的惯用写法实现。

解决方案

使用Pandas的groupby结合transform方法,一行代码即可完成:

df['floor_share'] = df['Area'] / df.groupby('Floor')['Area'].transform('sum')

如果需要和示例一样保留两位小数,可以补充round方法:

df['floor_share'] = (df['Area'] / df.groupby('Floor')['Area'].transform('sum')).round(2)

原理

  • transform('sum')会将分组计算的楼层总面积广播到原DataFrame的每一行,生成与原DataFrame长度一致的Series,每个元素对应当前行所在楼层的总面积。
  • 直接用原Area列除以这个Series,就能批量得到每个房间的楼层面积占比,完全避免手动遍历行的低效操作。

内容的提问来源于stack exchange,提问作者pederlh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:01:18