2016-01-20 5 views
4

В Джулии, я звоню модуль Python pandas_datareader для загрузки данных из Интернета:Julia: Преобразование PyObject в массив

using PyCall 
@pyimport datetime 
@pyimport pandas_datareader.data as web 
gdp = web.DataReader("GDPCA","fred",start=datetime.datetime(1929,1,1)) 

Переменная ввп является объектом PyObject. Таким образом, я не могу манипулировать им (например, брать журналы). Как преобразовать его в массив? Я попробовал конвертировать (Array {Float64,2}, gdp), но это только сбой Джулии.

Спасибо!

+0

Привета приветствовать переполнение стека, пожалуйста, попробуйте отформатировать свой код, чтобы сделать ваш вопрос более читаемым: (HTTP: // мета- .stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) –

+0

Похоже, что ваш 'gdp' - это панда' DataFrame'. В общем, вы можете [обращаться к атрибутам PyObject с помощью синтаксиса 'object [: attribute]' (https://github.com/stevengj/PyCall.jl/blob/master/README.md). – Chris

+0

Отформатирован код. Какой атрибут я должен искать для получения загруженных значений (и конвертировать их в массив)? – Marek

ответ

1

Макрос @pyimport используется для управления объектами Python в этом случае, pandas DataFrame, с помощью типа PyObject. Дано o::PyObject, o[:attribute] эквивалентно o.attribute в Python с автоматическим преобразованием типов. Таким образом, ниже фрагмент кода показывает, как получить массив Джулии от вызова функции Python,

julia> using PyCall 
julia> @pyimport datetime 
julia> gdp = web.DataReader("GDPCA","fred",start=datetime.datetime(1929,1,1)) 
julia> typeof(gdp) 
PyCall.PyObject 
julia> gdp[:values] 
87x1 Array{Float64,2}: 
1056.6 
966.7 
904.8 
788.2 
778.3 
... 

 Смежные вопросы

  • Нет связанных вопросов^_^