Почему sum() в Pandas выдает int, а не float при подсчете булевых значений

Подскажите, пожалуйста, в некотором видео у лектора при подсчете строк с булевыми значениями получается число типа флоат, у меня получается целое число. В чем может быть причина? вроде все так же делаю, за исключением renameЭто у лектора

Это мой код


Ответы (1 шт):

Автор решения: CrazyElf

Такое возможно только если в 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
→ Ссылка