Как изменить объект на число?

У меня есть df position1 (и я пытаюсь суммировать общую стоимость своего портфеля):

               total         Last_P
BNB       0.77063139    18.33230000
BTC          1.4e-07  5235.88000000
EOS           0.0073     5.82520000
ETH         1.31e-06   178.51000000
USDT     80.13510905            NaN
XRP              300     0.35374000

выше это объект и после использования:

position1.info()
position1 = pd.to_numeric(position1, downcast='float')
#position1 = pd.to_numeric(position1, errors='coerce')#tried this
#position1.apply(lambda x: pd.to_numeric(x), axis=0)#tried this    
print(position1)
position1.info()

Я получаю сообщение об ошибке:

TypeError: arg must be a list, tuple, 1-d array, or Series

Посоветуйте как это решить

какая строка вызывает эту ошибку?

Yuca 10.04.2019 19:08

Можешь распечатать df.dtypes

Umar.H 10.04.2019 19:09

@Datanovice: <class 'pandas.core.frame.DataFrame'> Индекс: 6 записей, столбцы данных BNB в XRP (всего 2 столбца): всего 6 ненулевых объектов Last_P 5 ненулевых типов объектов: объект (2) память использование: 144,0+ байт всего объекта Last_P объект dtype: объект

Giladbi 10.04.2019 20:05

@Yuca 2-я, 3-я и 4-я строки

Giladbi 10.04.2019 20:05
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

pd.to_numeric работает только со списком, кортежем, одномерным массивом или серией, как указано в упомянутой вами ошибке. Чтобы применить его к DataFrame, вам нужно использовать метод применения:

position1.apply(pd.to_numeric)

Обратите внимание, что, как и большинство функций в пандах, эта операция по умолчанию не выполняется «на месте».

Этот ответ был помечен как низкое качество. Пожалуйста, объясните, что делают предлагаемые вами изменения.

Miroslav Glamuzina 10.04.2019 20:14

Каково возвращаемое значение выражения выше?

Chris 10.04.2019 20:18

этот ответ работает, dtypes плавающие. Так что не уверен, что не так с вашим входом

Yuca 10.04.2019 20:27

при выполнении: position1['Pos_Value'] = position1.total * position1.Last_P результаты: TypeError: невозможно умножить последовательность на не-int типа 'str'

Giladbi 10.04.2019 20:27

нужно переназначить position1, операция не на месте

Chris 10.04.2019 20:28

dtypes: объект (2)

Giladbi 10.04.2019 20:28

Ваша переменная position1 не изменилась, вам нужно поработать с возвращаемым значением или переназначить его, например. position1 = position1.apply(pd.to_numeric)

Chris 10.04.2019 20:31

@Giladbi Удачи?

Chris 10.04.2019 20:42

@Крис спасибо. мой плохой, я пропустил df=... еще раз спасибо!

Giladbi 10.04.2019 20:58

Другие вопросы по теме