Я использую великолепный новый пакет r "reticulate" для объединения Python и R, чтобы иметь возможность использовать API от поставщика данных (Thomson Reuters Eikon) в R, который доступен только для Python.Я хочу сделать это, так как мои способности R лучше, чем мои (почти несуществующие) способности Python.
Я использую функцию "get_news_headlines" из модуля Python "eikon", которая служит API для загрузки данных.от Thomson Reuters Eikon.Я автоматически преобразовываю результирующий кадр данных Pandas в r-кадр данных, устанавливая аргумент «convert» функции сетчатой функции import в значение TRUE.
API устанавливает первый столбец загруженных данных, содержащий даты публикации новостей, какиндекс.Когда кадр данных автоматически преобразуется в объект r, в датах появляются дубликаты, и я получаю следующее сообщение об ошибке:
Error in `row.names<-.data.frame`(`*tmp*`, value = value) :
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique value when setting 'row.names': ‘2018-05-31 08:21:56’
Вот мой код:
library(reticulate) #load reticulate package to combine Python with R
PYTHON_pandas <- import("pandas", convert = TRUE)
#import Python pandas via reticulate's function "import"
PYTHON_eikon <- import("eikon", convert = TRUE)
#import the Thomson Reuters API Python module for use of the API in R
#(I set convert to true to convert Python objects into their R equivalents)
#do not bother with the following line:
PYTHON_eikon$set_app_id('ADD EIKON APP ID HERE')
#set a Thomson Reuters application ID (step is necessary to download data from TR, any string works)
DF <- PYTHON_eikon$get_news_headlines(query = 'Topic:REAM AND Topic:US', count = 10L)
#save news data from the API in an R dataframe
#query is the Thomson Reuters code from their Eikon database
#count is the number of news articles to be downloaded, I arbitrarily set it to 10 articles here
Итак, моя проблемазаключается в том, что я должен сказать R заменить дубликаты из индекса панд до того, как произойдет преобразование в r-кадр данных, чтобы избежать указанного сообщения об ошибке.Когда я устанавливаю количество аргументов на небольшое число и по совпадению не имею дубликатов, код работает отлично, как и сейчас.
Это, вероятно, легко для людей с некоторыми знаниями как в R, так и в Python (такне для меня, так как мои знания Python очень ограничены).К сожалению, код не тиражируется, так как я хочу использовать доступ к данным Thomson Reuters.Любая помощь высоко ценится!
РЕДАКТИРОВАТЬ: Возможно ли будет установить аргумент convert = FALSE
в функции import
, чтобы сначала получить кадр данных pandas в R?Тогда мне потребовалась бы возможность манипулировать информационным фреймом pandas Python в R, чтобы удалить дубликаты или, в качестве альтернативы, удалить индексный фрейм pandas, прежде чем я вручную преобразую фрейм данных pandas в R-фрейм данных.Это возможно с reticulate
?
Документация для пакета Python eikon пока не очень хороша, так как это довольно новый модуль Python.
@ Moody_Mudskipper:
str(PYTHON_eikon)
возвращает только Module(eikon)
, поскольку я только загружаю соответствующий модуль Python с функцией импорта.
names(PYTHON_eikon)
возвращает: "data_grid" "eikonError" "EikonError" "get_app_id" "get_data" "get_news_headlines" "get_news_story" "get_port_number" "get_symbology" "get_timeout" "get_timeseries" "json_requests" "news_request" "Profile" "send_json_request" "set_app_id" "set_port_number" "set_timeout" "symbology" "time_series" "tools" "TR_Field"
Кажется, ни одна из доступных функций eikon не работаетпомогите мне с моей проблемой.