Почему sum() в Pandas выдает int, а не float при подсчете булевых значений
Подскажите, пожалуйста, в некотором видео у лектора при подсчете строк с булевыми значениями получается число типа флоат, у меня получается целое число. В чем может быть причина? вроде все так же делаю, за исключением rename
Ответы (1 шт):
Такое возможно только если в success лежат не прямо вот питоновские булевы значения True и False, а их целые значения 0, 1 и ещё в столбце есть np.nan, в этом случае столбец будет иметь тип float, как известно (в широко используемых версиях Pandas NA есть только в типах float, а в int нет NA), и суммироваться он будет тоже в float. С True, False и np.nan такой фокус не пройдёт, столбец тогда будет типа object и результат суммирования будет преобразован в int.
Пример:
import numpy as np
import pandas as pd
df = pd.DataFrame({'client': [1, 1, 2, 2], 'success': [1, 0, 1, np.nan]})
df.groupby('client', as_index=False).sum()
| client | success | |
|---|---|---|
| 0 | 1 | 1.0 |
| 1 | 2 | 1.0 |
