У меня есть dataframe вроде этого:Как выполнять операции над группами в панд
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
Цель состоит в том, чтобы добавить новый столбец, который дает долю площади каждого этажа A, которая учитывается каждым типом комнаты B (обратите внимание, что это тип комнаты, поэтому значение в столбце вывода должно быть одинаковым для каждой уникальной комбинации A и B).
До сих пор, что у меня есть:
>>> grouped = df.groupby(['A','B'])
>>> area_proportion = lambda x: (x['Area']/x['Area'].sum())
>>> grouped.transform(area_proportion)
Но это, кажется, лечение лямбда как по индексу оригинального dataframe (я думал, что это будет группой), поскольку она просто возвращает:
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
Это правильно. –