AttributeError: объект DataFrame не имеет атрибута dtype - PullRequest
0 голосов
/ 06 мая 2018

Я встретил

Ошибка в py_get_attr_impl (x, name, silent): AttributeError: Объект 'DataFrame' не имеет атрибута 'dtype'

при вызове кода Python в R с использованием сетчатого пакета в R.

Код на python работает правильно. Я не уверен, откуда эта ошибка. Я использую библиотеку pvlib python для вызова некоторых из баз данных сборки.

Мой код для R:

library('reticulate')
pd <- import('pandas')
pvlib <- import('pvlib')
np <- import('numpy') 
sandia_modules = pvlib$pvsystem$retrieve_sam('SandiaMod')
cec_inverters = pvlib$pvsystem$retrieve_sam("CECInverter")

У меня проблема с cec_inverters = pvlib$pvsystem$retrieve_sam("CECInverter"), когда код на python работает, но выполнение тех же команд на R выдает ошибку. Я не уверен, в чем проблема. Пожалуйста, помогите мне решить эту проблему.

Аналогичный код в python:

import pandas as pd
import numpy as np
import pvlib

sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod')
cec_inverters = pvlib.pvsystem.retrieve_sam('cecinverter')

Я пытался найти решение, но пока не нашел ничего полезного.

Вот трассировка:

10: stop(list(message = "AttributeError: 'DataFrame' object has no attribute 'dtype'", 
        call = py_get_attr_impl(x, name, silent), cppstack = list(
            file = "", line = -1L, stack = "C++ stack not available on this system")))
9: .Call(`_reticulate_py_get_attr_impl`, x, name, silent)
8: py_get_attr_impl(x, name, silent)
7: py_get_attr(x, name)
6: `$.python.builtin.object`(x[[column]], "dtype")
5: x[[column]]$dtype
4: py_to_r(x[[column]]$dtype$name)
3: py_to_r.pandas.core.frame.DataFrame(result)
2: py_to_r(result)
1: pvlib$pvsystem$retrieve_sam("CECInverter")

Ответы [ 2 ]

0 голосов
/ 19 июня 2018

Я уже давно понял это, но здесь сейчас сообщаю, что пакет "reticulate" от GitHub - самый последний, и многие проблемы были устранены в этой версии. Основным из них является pandas DataFrame преобразование в R data.frame

Вот код для этого

library(devtools)
devtools::install_github("rstudio/reticulate")
0 голосов
/ 06 мая 2018

Попробуйте использовать параметр as в import(). Ваш код также ошибся для меня, но это сработало:

library(reticulate) # version 1.6

pd <- import('pandas', as = "pd")
pvlib <- import('pvlib', as = "pvlib")
np <- import('numpy', as = "np") 

sandia_modules <- pvlib$pvsystem$retrieve_sam('SandiaMod')
cec_inverters <- pvlib$pvsystem$retrieve_sam("CECInverter")
...