所以我对Python非常陌生,或者更准确地说,我从来不使用它,并且试图执行其他人的代码来获得一些数字,但是我一直在经历一个错误。
下面是我正在尝试运行的代码的一个非常精简的版本。请注意,create_and_run_model是一个更复杂的函数,但为了重现性,我缩短了它。我似乎无法运行循环,甚至无法运行单独的状态级模型。
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_and_run_model()缺少一个必需的位置参数:'state'“
当我试图运行单个模型时,我收到一条错误消息:"'str‘对象没有属性’正‘“。
我一点也不知道我做错了什么。任何帮助都将不胜感激,
发布于 2020-05-21 15:20:22
我认为参数的顺序不匹配
声明函数时,create_and_run_model(name, state)名称为fiirst,状态为第二
当函数被调用时,状态似乎是第一位的,名称是第二位的。
按评论编辑:
不过,您正在将所述数据格式"NY“作为字符串传递。这就是为什么对它的肯定也失败的原因。而且,名字似乎没有被使用。如果您只想调用只包含"NY“的dataframe,那么您可以过滤它类似于NY = states[['NY']],或者使用states[['NY']]作为参数而不是"NY”。
和摆脱name,因为它没有使用,如果你不打算使用它
发布于 2020-05-21 15:32:23
函数create_and_run_model接受两个位置参数name和state,但从不使用name。因此,也许您应该从函数定义中删除第一个参数,如下所示:
def create_and_run_model(state):
confirmed = state.positive.diff().dropna()并且不要在create_and_run_model函数调用中使用它:
model_ny = create_and_run_model(states.loc['NY'])
states.loc['']将允许您从dataframe中选择特定状态。
https://stackoverflow.com/questions/61937640
复制相似问题