Ваши столбцы обрабатываются не как числа, а как строки.Попробуйте запустить df.dtypes
.Против каждого столбца у вас будет свой тип.Если вы не видите float
или int
, это означает, что эти столбцы, вероятно, были прочитаны как строки.
import pandas as pd
dff = pd.DataFrame([[1,'a'], [2, 'b']])
dff.dtypes
0 int64
1 object
Ниже я создал фрейм данных с числами внутри кавычек.Взгляните на dtypes
.
dff = pd.DataFrame([['1','a'], ['2', 'b']])
dff.dtypes
0 object
1 object
Здесь вы видите, что столбец чисел не помечен int
/ float
из-за кавычек.Теперь, если я возьму сумму первого столбца
dff.iloc[:,0].sum()
'12'
, я получу '12'
, что соответствует вашему.Чтобы преобразовать эти столбцы в числовые, посмотрите в pd.to_numeric
dff.iloc[:,0] = pd.to_numeric(dff.iloc[:,0], errors='ignore')
dff.iloc[:,0].sum()
3