Python 属性错误:';数据帧';对象没有属性';数据类型';
我害怕 py_get_attr_impl(x,name,silent)中出错:AttributeError: “DataFrame”对象没有属性“dtype” 使用R中的网状包调用R中的python代码 python中的代码运行正常。我不确定这个错误是从哪里来的。我正在使用pvlib python库调用一些内置数据库 我的代码是R,是:Python 属性错误:';数据帧';对象没有属性';数据类型';,python,r,reticulate,pvlib,Python,R,Reticulate,Pvlib,我害怕 py_get_attr_impl(x,name,silent)中出错:AttributeError: “DataFrame”对象没有属性“dtype” 使用R中的网状包调用R中的python代码 python中的代码运行正常。我不确定这个错误是从哪里来的。我正在使用pvlib python库调用一些内置数据库 我的代码是R,是: library('reticulate') pd <- import('pandas') pvlib <- import('pvlib') np &
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")
我试着寻找解决办法,但到目前为止没有找到任何有用的办法
以下是回溯:
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")
尝试使用
import()
中的as
参数。您的代码对我来说也是错误的,但这起作用了:
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")
library(网状)#版本1.6
pd我早就知道了,但现在在这里发布的是来自GitHub的“networkite”
软件包是最新的,并且在这个版本中解决了许多问题。主要的一个是将数据帧转换为Rdata.frame
下面是这样做的代码
library(devtools)
devtools::install_github("rstudio/reticulate")
你能发布完整的错误回溯吗?你现在可以检查了。那不是完整的错误回溯。调用堆栈的每一帧应该有一行。不仅仅是一行我们不知道的地方。为什么Python中有ceinverter
,而R中有ceinverter
?你能试着在R中改变大小写以匹配Python吗?两者都在Python中工作。所以这不是问题。即使我输入“sandiamod”而不是“sandiamod”,它也能工作。哇,这真是疯了。你有没有解释为什么这段代码可以工作,但是原来的代码失败了?networkite
文档中的示例看起来像是OP的代码,而不是这样。@JohnZwinck很多事情都是这样工作的(奇怪)。最初我对pvlib$pvsystem$retrieve_sam('SandiaMod')
有问题,但我卸载了networkite
软件包并重新安装。好像没有什么问题。现在我在访问数据库中的内容时遇到了问题sandia_module=sandia_modules[“Canadian_Solar_CS5P_220M____2009_”]
这一行代码以前在使用sandia_modules
时工作得很好,但现在它给出了一个错误:类型为“environment”的对象不可子集
不确定为什么事情会如此奇怪。一次它们工作,另一次行为相反,我发现了我最新一期的解决方案:“(复制):我使用[[而不是[,因为前者做单元素索引,而后者可以通过逻辑向量选择范围。”如果这就是我以前能够访问的原因。荒谬。我无法完全跟踪networkite
中发生的事情导致了这一点,但我在DataFrame ops中看到过,而其他模块代码中也有类似的内容。实际上,只有pd
library(devtools)
devtools::install_github("rstudio/reticulate")