- 此问题在此处已有答案**:
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]
1条答案
按热度按时间wribegjk1#
IIUC用途: