Рассчитайте некоторые значения для каждой группы столбцов в Python с помощью Pandas - PullRequest
0 голосов
/ 18 мая 2018

У меня есть DataFrame

Input

         A   B   C     D          
0      one  50   35  1.5  
1      two  30   40  2.0 
2      one  50   35  3.0 
3    three  40   35  3.5 
4      one  40   35  2.5

, и мне нужно применить математическую функцию к столбцу D и заполнить ее новым столбцом E, но перед тем, как мне нужно сгруппировать столбцыB и C. Например, математическая функция будет применена к значениям 1,5 и 3,0 для пары (50,35)

B   C   A     D
50  35  one   1.5
        one   3.0

40  35  three 3.5
        one   2.5

30  40  two   2.0

Значения рассчитываются с помощью пользовательской функции, которая получает на вход массив numpy и выводитмассив такой же длины.

Вывод

         A   B   C     D   E          
0      one  50   35  1.5   4.5
1      two  30   40  2.0   4.5
2      one  50   35  3.0   3.5
3    three  40   35  3.5   6.8
4      one  40   35  2.5.  8.9

Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 18 мая 2018

Я считаю, что нужно GroupBy.transform для возврата Series с тем же размером, что и оригинал DataFrame:

def func(x):
    print (x)
    #custom function, e.g. multiple all together 
    return x.prod()

df['E'] = df.groupby(['B','C'])['D'].transform(func)
print (df)
       A   B   C    D   E
0    one  50  35  1.5  4.50
1    two  30  40  2.0  2.00
2    one  50  35  3.0  4.50
3  three  40  35  3.5  8.75
4    one  40  35  2.5  8.75
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...