У меня есть 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
Посоветуйте как это решить
Можешь распечатать df.dtypes
@Datanovice: <class 'pandas.core.frame.DataFrame'> Индекс: 6 записей, столбцы данных BNB в XRP (всего 2 столбца): всего 6 ненулевых объектов Last_P 5 ненулевых типов объектов: объект (2) память использование: 144,0+ байт всего объекта Last_P объект dtype: объект
@Yuca 2-я, 3-я и 4-я строки
pd.to_numeric
работает только со списком, кортежем, одномерным массивом или серией, как указано в упомянутой вами ошибке. Чтобы применить его к DataFrame, вам нужно использовать метод применения:
position1.apply(pd.to_numeric)
Обратите внимание, что, как и большинство функций в пандах, эта операция по умолчанию не выполняется «на месте».
Этот ответ был помечен как низкое качество. Пожалуйста, объясните, что делают предлагаемые вами изменения.
Каково возвращаемое значение выражения выше?
этот ответ работает, dtypes плавающие. Так что не уверен, что не так с вашим входом
при выполнении: position1['Pos_Value'] = position1.total * position1.Last_P результаты: TypeError: невозможно умножить последовательность на не-int типа 'str'
нужно переназначить position1, операция не на месте
dtypes: объект (2)
Ваша переменная position1
не изменилась, вам нужно поработать с возвращаемым значением или переназначить его, например. position1 = position1.apply(pd.to_numeric)
@Giladbi Удачи?
@Крис спасибо. мой плохой, я пропустил df=... еще раз спасибо!
какая строка вызывает эту ошибку?