сумма и деление суммы столбцов внутри группы панд по агг - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь сделать панд групповым и совокупным.У меня есть сумма из двух столбцов, и мне также нужно разделить сумму на два столбца.

tdf = pd.DataFrame(
    [
        {
        'app' : 'A',
         'num_requests'    : 100,
         'sum_resp_time' : 50000
        },
        {
        'app' : 'A',
         'num_requests'    : 50,
         'sum_resp_time' : 40000
        },
        {
        'app' : 'A',
         'num_requests'    : 70,
         'sum_resp_time' : 8000
        },
        {
        'app' : 'B',
         'num_requests'    : 100,
         'sum_resp_time' : 3000
        },
        {
        'app' : 'B',
         'num_requests'    : 10,
         'sum_resp_time' : 2000
        },
        {
        'app' : 'C',
         'num_requests'    : 1000,
         'sum_resp_time' : 500000
        },
        {
        'app' : 'C',
         'num_requests'    : 120,
         'sum_resp_time' : 52000
        }
    ]
)

(
    tdf 
    .groupby
    (        
        ['app']
    ) 
    .agg 
    ( 
        { 
            'num_requests' : ['sum'],             
            'sum_resp_time' : ['sum'],
            #'average_resp_time' : lambda x : x['sum_resp_time'].sum()  / x['num_requests'].sum()
        } 
    )

)

Как я могу заставить работать 'average_resp_time', в настоящее время он закомментирован.Мой текущий расчет среднего выдает ошибку.

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Это ваш groupby

grouped = tdf.groupby(['app']).agg({'num_requests':'sum', 'sum_resp_time':'sum'})

Чтобы создать столбец average_resp_time, просто выполните:

grouped['average_resp_time'] = grouped['sum_resp_time'] / grouped['num_requests']

    num_requests    sum_resp_time   average_resp_time
app         
A   220     98000   445.454545
B   110     5000    45.454545
C   1120    552000  492.857143
0 голосов
/ 25 марта 2019

Я думаю, что вы пропустили ось = 1.

df2['average_resp_time' ] = df2.apply(lambda x : x['sum_resp_time'].sum() / x['num_requests'], axis =1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...