如何使用Pandas找到相对份额的房间在个别楼层[复制]

cetgtptt  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(80)
    • 此问题在此处已有答案**:

Pandas percentage of total with groupby(16个答案)
6天前关闭。
我有一个具有以下结构的 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,该系列具有给定楼层的相对份额/比率,因此 Dataframe 变为

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

如果可以用一行程序(或任何其他惯用的方式)来实现这一点,我将非常乐意学习如何实现。

    • 当前解决方法**

我所做的产生正确结果的工作是首先通过以下公式求出总建筑面积

floor_area_sums = df.groupby('Floor')['Area'].sum()

它给出了

Floor
1    60
2    35
Name: Area, dtype: int64

然后,我将一个新系列初始化为0,并在迭代 Dataframe 行时找到正确的值。

df["floor_share"] = 0
for idx, row in df.iterrows():
    df.loc[idx, 'floor_share'] = df.loc[idx, 'Area']/floor_area_sums[row.Floor]
wribegjk

wribegjk1#

IIUC用途:

df["floor_share"] = df['Area'].div(df.groupby('Floor')['Area'].transform('sum'))
print (df)
   Floor         Room  Area  floor_share
0      1  Living room    18     0.300000
1      1      Kitchen    18     0.300000
2      1      Bedroom    24     0.400000
3      2     Bathroom    10     0.333333
4      2      Bedroom    20     0.666667

相关问题