Python返回错误消息“str”对象没有属性

Python返回错误消息“str”对象没有属性,python,Python,因此,我对Python非常陌生,或者更准确地说,我从未使用过它,并且试图执行其他人的代码以获得一些数据,但我一直在经历一个错误 下面是我正在尝试运行的代码的精简版本。请注意,create_和run_模型是一个更复杂的函数,但为了重现性,我缩短了它。我似乎既不能运行循环,也不能运行单个的状态级模型 import pandas as pd ## Load State Information url = 'https://covidtracking.com/api/v1/states/daily.c

因此,我对Python非常陌生,或者更准确地说,我从未使用过它,并且试图执行其他人的代码以获得一些数据,但我一直在经历一个错误

下面是我正在尝试运行的代码的精简版本。请注意,create_和run_模型是一个更复杂的函数,但为了重现性,我缩短了它。我似乎既不能运行循环,也不能运行单个的状态级模型

import pandas as pd

## Load State Information
url = 'https://covidtracking.com/api/v1/states/daily.csv'
states = pd.read_csv(url,
                     parse_dates=['date'],
                     index_col=['state', 'date']).sort_index()

# Note: GU/AS/VI do not have enough data for this model to run
# Note: PR had -384 change recently in total count so unable to model
states = states.drop(['MP', 'GU', 'AS', 'PR', 'VI'])

def create_and_run_model(name, state):
    confirmed = state.positive.diff().dropna()

# Loop that is in the original code
models = {}

for state, grp in states.groupby('state'):

    print(state)

    if state in models:
        print(f'Skipping {state}, already in cache')
        continue

    models[state] = create_and_run_model(grp.droplevel(0))

model_ny = create_and_run_model(states, "NY")
当我尝试运行循环时,会收到一条错误消息,说明:create_和_run_model缺少1个必需的位置参数:“state”

当我尝试运行单个模型时,我收到一条错误消息,指出:“str”对象没有“positive”属性


我不知道我做错了什么。任何帮助都将不胜感激,

我认为参数的顺序不匹配

当函数声明为create_和run_modelname时,state name是第一个,state是第二个

当函数名为model_ny=create_和run_modelstates时,ny state似乎是第一个,而name是第二个

根据评论编辑:


不过,您正在将所述数据帧NY作为字符串传递。这就是为什么在它上面打积极的电话也是失败的。而且这个名字似乎没有被使用。如果您只想调用只包含NY的数据帧,那么可以对其进行过滤,例如NY=states[['NY']]或使用states[['NY']]作为参数,而不是NY


不要使用名称,因为它没有被使用,如果你不打算使用它,我认为参数的顺序不匹配

当函数声明为create_和run_modelname时,state name是第一个,state是第二个

当函数名为model_ny=create_和run_modelstates时,ny state似乎是第一个,而name是第二个

根据评论编辑:


不过,您正在将所述数据帧NY作为字符串传递。这就是为什么在它上面打积极的电话也是失败的。而且这个名字似乎没有被使用。如果您只想调用只包含NY的数据帧,那么可以对其进行过滤,例如NY=states[['NY']]或使用states[['NY']]作为参数,而不是NY

不要使用name,因为它没有被使用,如果你不打算使用它,函数create\u和run\u model接受两个位置参数name和state,但从不使用name。因此,也许您应该从函数定义中删除第一个参数,如下所示:

def create_and_run_model(state):
    confirmed = state.positive.diff().dropna()
而不是在create_和run_模型函数调用中使用它:

model\u ny=创建和运行\u modelstates.loc['ny']

loc[]将允许您从数据帧中选择特定状态

函数create_和_run_model接受两个位置参数name和state,但从不使用name。因此,也许您应该从函数定义中删除第一个参数,如下所示:

def create_and_run_model(state):
    confirmed = state.positive.diff().dropna()
而不是在create_和run_模型函数调用中使用它:

model\u ny=创建和运行\u modelstates.loc['ny']


loc[]将允许您从数据帧中选择特定状态

我考虑过,但我不确定是不是这样。我的解释是,在“create_and_run_model”中,name=包含状态信息的数据帧,而“state”指定要查看的状态,即您正在以字符串形式传递所述数据帧NY。这就是为什么在它上面打积极的电话也是失败的。而且这个名字似乎没有被使用。如果您只想调用只包含NY的数据帧,那么可以对其进行过滤,例如NY=states[['NY']]或使用states[['NY']]作为参数,而不是NY。我考虑过这一点,但我不确定是否是这样。我的解释是,在“create_and_run_model”中,name=包含状态信息的数据帧,而“state”指定要查看的状态,即您正在以字符串形式传递所述数据帧NY。这就是为什么在它上面打积极的电话也是失败的。而且这个名字似乎没有被使用。如果您只想调用只包含NY的数据帧,那么可以对其进行过滤,例如NY=states[['NY']]或使用states[['NY']]作为参数,而不是NY。您可以调用create_和run_modelstates,NY,因此该调用的参数状态为NY,这是一个字符串。然后你做state.positive.diff.dropna,因此错误。。。也许你指的是名字,肯定的,区别的。当您调用create_和_run_modelgrp.droplevel0时,您根本没有传递state参数…您调用create_和_run_modelstates,NY,因此该调用的参数状态是NY,这是一个字符串。然后你做state.positive.diff.dropna,因此错误。。。也许你指的是名字,肯定的,区别的。当您调用create_和run_modelgrp.droplevel0时,您根本没有传递state参数。。。