потеря значений после pivot_table pandas - PullRequest
4 голосов
/ 19 января 2020

У меня есть следующий фрейм данных:

df.between_time('09:00', '09:05').head(10)

                     Qtd   Preço  Núm            CC           CV        Agr
Hora                                                                       
2020-01-19 09:05:00    5  4073.5  734    1618-Ideal    308-Clear   Vendedor
2020-01-19 09:05:00    5  4073.5  733    1618-Ideal   120-Genial   Vendedor
2020-01-19 09:05:00    5  4073.5  732    120-Genial   1618-Ideal   Vendedor
2020-01-19 09:05:00   10  4074.0  731  045-C Suisse  127-Tullett   Vendedor
2020-01-19 09:05:00    5  4074.0  730    120-Genial  127-Tullett   Vendedor
2020-01-19 09:05:00    5  4074.0  729  072-Bradesco  127-Tullett   Vendedor
2020-01-19 09:05:00    5  4074.0  728       008-UBS       003-XP   Vendedor
2020-01-19 09:04:59   20  4074.5  727     262-Mirae      122-BGC  Comprador
2020-01-19 09:04:59    5  4074.5  726  072-Bradesco      122-BGC   Vendedor
2020-01-19 09:04:59   35  4074.5  725       008-UBS      122-BGC   Vendedor

при попытке повернуть таблицу, значения меняются с int на float, а значение результата не соответствует реализованному:

df.between_time('09:00', '09:05').head(10).pivot_table(index = 'Preço', columns = 'Agr', values = 'Qtd')

Agr     Comprador  Vendedor
Preço                      
4073.5        NaN      5.00
4074.0        NaN      6.25
4074.5       20.0     20.00

столбец продавца получил невозможное значение (6,25), поскольку в первом кадре данных есть только целочисленные значения.

как это исправить, чтобы столбцы получали правильную сумму столбца Qty?

1 Ответ

4 голосов
/ 19 января 2020

Агрегатная функция по умолчанию в DataFrame.pivot_table равна np.mean, поэтому необходимо добавить aggfunc='sum':

df1 = (df.between_time('09:00', '09:05')
         .head(10)
         .pivot_table(index = 'Preço', columns = 'Agr', values = 'Qtd', aggfunc='sum'))

Сведения :

print (df.pivot_table(index = u'Preco', columns = 'Agr', values = 'Qtd', aggfunc='sum'))
Agr     Comprador  Vendedor
Preço                      
4073.5        NaN      15.0
4074.0        NaN      25.0
4074.5       20.0      40.0
...