#python #thomson-reuters-eikon #refinitiv-eikon-api
#python #thomson-reuters-eikon #уточнение-eikon-api
Вопрос:
TSRdfr["Return"] = pd.to_numeric(TSRdfr.Return, errors='coerce')
Это не преобразование типа данных Return
из Object в float64
. Я попытался удалить errors ='coerce'
, чтобы посмотреть, что происходит.
Я получаю сообщение об ошибке:
Невозможно проанализировать NaN в позиции 0
когда я не использую errors = 'coerce'
.
Доступ к возвращаемым номерам осуществляется из API Refinitiv Eikon. Я предполагаю, что они слишком велики для преобразования в float64
. Есть предложения??
Комментарии:
1. Не могли бы вы предоставить больше информации о
TSRdfr
? Каково его содержимое?2. @bubble У меня есть фрейм данных TSRdfr, к которому я получил доступ из Eikon API на Python. Общий возврат индексного инструмента 1. RIO.L. 15.990065 2. AAP.A. 22.543209 и так далее ….
3. Общий возврат имеет тип Object
4. У меня есть фрейм данных TSRdfr, к которому я получил доступ из Eikon API на Python. Общий возврат индексного инструмента 1. RIO.L. 15.990065 2. AAP.A. 22.543209 и так далее …. Тип данных Total Return — это Object, который мне нужно преобразовать в float64. Я использую приведенный ниже синтаксис. TSRdfr[«Общий возврат»] = pd.to_numeric(TSRdfr[«Общий возврат»], ошибки = ‘принудительный’)
Ответ №1:
Попробуйте следующее:
import pandas as pd
import re
repat = re.compile('d (?:.d )?')
# sample data frame
df = pd.DataFrame({'Return': ['some data 123.123', 'tick 0.12']})
df.loc[:, 'Converted'] = df.Return.apply(lambda x: float(repat.findall(x)[0]))
Надеюсь, это поможет
Комментарии:
1. импортировать повторно repat = повторно.compile(‘ d (?:. d )?’) TSR_df_06_09.loc[:, ‘Converted’] = TSR_df_06_09.Return.apply(лямбда x: float(repat.findall(x)[0]))
2. Ошибка атрибута: объект ‘DataFrame’ не имеет атрибута ‘Return’
3. Это означает, что у
TSR_df_06_09
столбца нет имениReturn
. Назовите имена столбцовTSR_df_06_09
; распечатайтеTSR_df_06_09.columns
, чтобы увидеть все столбцы фрейма данных.
Ответ №2:
Если ваше число слишком велико, вы можете использовать десятичную библиотеку
import decimal
decimal.getcontext().prec = 100
df[col] = df[col].map(lambda x: decimal.Decimal(x))
Комментарии:
1. импортируйте decimal decimal.getcontext().prec = 100 TSR_df_06_09[‘Total Return’] = pd.to_numeric(TSR_df_06_09[‘Total Return’].map(лямбда x: десятичный. Десятичный (x)))
2. Попробовал приведенный выше код.. получаю эту ошибку: недействительная операция: [ ConversionSyntax’>]