Выполнять вычисления для подмножества фрейма данных на основе значения столбца - PullRequest
0 голосов
/ 05 августа 2020

У меня есть pandas df, в котором у меня есть категориальный столбец, а затем различные столбцы, которые имеют c - мне нужно вычислить различные значения, но для подмножества df, где категория такая же:

Type | num1 | num2
 a   | 10   | 10 
 a   | 5    | 10
 a   | 1    | 30 
 b   | 5    | 10
...

Здесь я хотел бы вычислить%, которое составляет каждое значение от общего количества этого типа

Таким образом, результат будет:

Type | num1 | num2 | num2_pct
 a   | 10   | 10   | 20
 a   | 5    | 10   | 20
 a   | 1    | 30   | 60
...

Это вычисление будет происходить для каждого значения в столбце type.

Я пытался использовать df.loc и писать al oop, создавая новый DF и затем объединяя их - но это не может быть правильным способом !

1 Ответ

1 голос
/ 05 августа 2020

Вы можете запустить его индивидуально или использовать канал для получения результатов:

#pipe

df["num1_pct"] = (df.groupby("Type")
                    .pipe(lambda x: x.num2.transform(lambda x: x).div(x.num2.transform("sum")).mul(100)))

       Type num1    num2    num1_pct
   0    a   10      10      20.0
   1    a   5       10      20.0
   2    a   1       30      60.0
   3    b   5      10       100.0

#individually, and in my own opinion, cleaner : 

grouping = df.groupby("Type")

df["num2_pct"] = df.num2 * 100 / grouping.num2.transform("sum")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...