3
我有这样一个数据帧:如何在大熊猫的群体进行操作
ID A B Area
0 1 A1 B1 1.0
1 2 A1 B2 2.0
2 3 A1 B1 0.5
3 4 A1 B2 1.0
4 5 A2 B3 2.0
5 6 A2 B4 6.0
我想出去是这样的:
ID A B Area B as % of A
0 1 A1 B1 1.0 0.333
1 2 A1 B2 2.0 0.666
2 3 A1 B1 0.5 0.333
3 4 A1 B2 1.0 0.666
4 5 A2 B3 2.0 0.25
5 6 A2 B4 6.0 0.75
目的是为了添加新列其中给出每个房间类型B占据的每层A的面积的比例(注意这是按房间类型,因此对于A和B的每个唯一组合,输出栏中的值应该是相同的)。
到目前为止,我所拥有的是:
>>> grouped = df.groupby(['A','B'])
>>> area_proportion = lambda x: (x['Area']/x['Area'].sum())
>>> grouped.transform(area_proportion)
但是,这似乎是治疗lambda作为由原始数据框的索引(我认为这将是按组),因为它只是返回:
Out[142]:
ID Area
0 1 1.0
1 2 2.0
2 3 0.5
3 4 1.0
4 5 2.0
5 6 6.0
我明显地误解了某些东西或者错过了文档的重要部分。我应该如何使用groupby来获得我需要的结果?
你看看%不正确 – EdChum
嗯,我想我是的事实,有重复的条目,以便他们应该等同对待,而不是单独的条目 – EdChum
这是正确的混淆。 –