np.среднее(phDF.ram) повышение eror

#python #pandas

Вопрос:

 phoneinfo=np.array([['galaxy s8','android',64,4,140,'samsung',6],['lumia','windows',32,3,150,'microsoft',6],
                    ['xperia l1','android',16,2,180,'sony',5],['iphone7','ios',128,2,138,'apple',4],
                    ['u ultra','android',64,4,170,'htc',5],['galaxy s5','android',16,2,145,'samsung',5],
                    ['iphone 5s','ios',32,1,112,'apple',4],['moto g5','android',16,3,144.7,'motorola',5],
                    ['pixel','android',128,4,143,'google',5]])

phDF=pd.DataFrame(phoneinfo,index=[1,2,3,4,5,6,7,8,9],columns=['name','os','capacity','ram','weight','company','inch'])

np.median(phDF.ram)
 

Сообщение об ошибке:

 TypeError: ufunc 'true_divide' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
 

Комментарии:

1. какая ошибка ? Всегда публикуйте полное сообщение об ошибке, включая трассировку стека

2. @juanpa.arrivillaga, я понял это, запустив коды: TypeError: ufunc 'true_divide' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

3. да, это было то, что я пытался решить

Ответ №1:

Поскольку тип dtype вашего ram столбца находится в object типе, np.median не может работать с ним.

 phDF.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 9 entries, 1 to 9
Data columns (total 7 columns):
 #   Column    Non-Null Count  Dtype 
---  ------    --------------  ----- 
 0   name      9 non-null      object
 1   os        9 non-null      object
 2   capacity  9 non-null      object
 3   ram       9 non-null      object
 4   weight    9 non-null      object
 5   company   9 non-null      object
 6   inch      9 non-null      object
dtypes: object(7)
memory usage: 576.0  bytes
 

Вы можете сделать это одним из следующих способов:

Попробуйте Series.median() вместо этого:

 phDF.ram.median()
 

Или преобразуйте dtype в int перед использованием np.median :

 np.median(phDF.ram.astype(int))
 

Или используйте pd.to_numeric() для преобразования столбца сначала в числовой:

 np.median(pd.to_numeric(phDF.ram))
 

Результат:

 3.0