У меня есть следующий pandas фрейм данных под названием «производство», и я хотел бы получить вес продукции каждого растения в зависимости от его вида, теплицы и года_месяца
plant species greenhouse produce year_month
0001 S1 GH1 200 2020-05
0002 S1 GH1 200 2020-05
0003 S2 GH1 100 2020-05
0004 S2 GH1 50 2020-05
0005 S1 GH2 90 2020-05
0006 S2 GH2 60 2020-05
0007 S1 GH1 150 2020-04
0008 S1 GH2 250 2020-04
0009 S1 GH2 100 2020-04
0010 S2 GH2 150 2020-04
0011 S2 GH2 190 2020-04
0012 S2 GH2 10 2020-04
Например, для '2020- 05 'у нас есть GH1 и GH2. В GH1 на S1 (завод 0001 и 0002) было произведено 400 (200 + 200), поэтому завод 0001 отвечал за вес 0,50, а завод 0002 - за 0,50. S2 произвел 150 (100 + 50); Итак, посадке 0003 мы приписываем вес 0,66 (100/150), а посадке 0004 - вес 0,33 (50/150). И так далее.
Я хотел бы сгенерировать эти веса «условной группировки по» и назначить их в качестве нового столбца фрейму данных, чтобы результат выглядел так:
plant species greenhouse produce year_month contribution_weight
0001 S1 GH1 200 2020-05 0.50
0002 S1 GH1 200 2020-05 0.50
0003 S2 GH1 100 2020-05 0.66
0004 S2 GH1 50 2020-05 0.33
0005 S1 GH2 90 2020-05 1.00
0006 S2 GH2 60 2020-05 1.00
0007 S1 GH1 150 2020-04 1.00
0008 S1 GH2 250 2020-04 0.71
0009 S1 GH2 100 2020-04 0.29
0010 S2 GH2 150 2020-04 0.42
0011 S2 GH2 190 2020-04 0.54
0012 S2 GH2 10 2020-04 0.02
Как я могу программно добавить столбец extension_weight?
Я пробовал использовать pandas для вычисления каждого веса вручную, но это очень утомительно, подвержено ошибкам и генерирует много дополнительных наборы данных. Это живые данные, поэтому в следующем месяце будет еще одна партия с year_month '2020-06', а также могут быть дополнительные GH и виды, поэтому я ищу решение, которое является достаточно общим и абстрактным, чтобы работать даже с дополнительными метками в каждом из столбцов. Может, какая-нибудь функция подействует?