Чтобы понять это поведение, обратите внимание:
- Метод агрегирования по умолчанию для
pd.pivot_table
- «среднее».
- Среднее 3 целых числа часто не является целым числом.
- Если любое из значений в сводной таблице равно
float
[включая NaN
], все , то серии значений преобразуются в float
.
Ниже приведены минимальные примеры.
Преобразование в плавающее срабатывание
df = pd.DataFrame({'A': [1, 2, 1, 2, 1, 1, 2, 1],
'B': ['a', 'b', 'a', 'c', 'b', 'c', 'a', 'a'],
'C': [1, 2, 3, 4, 5, 6, 7, 4]})
df = pd.pivot_table(df, index='A', columns=['B'], values='C', aggfunc='mean')
print(df)
B a b c
A
1 2.666667 5.0 6.0
2 7.000000 2.0 4.0
Преобразование в плавающее не сработало
df = pd.DataFrame({'A': [1, 2, 1, 2, 1, 1, 2, 1],
'B': ['a', 'b', 'a', 'c', 'b', 'c', 'a', 'a'],
'C': [1, 2, 3, 4, 5, 6, 7, 5]})
df = pd.pivot_table(df, index='A', columns=['B'], values='C', aggfunc='mean')
print(df)
B a b c
A
1 3 5 6
2 7 2 4