【问题标题】:replacing print () with return statement [duplicate]用return语句替换print()[重复]
【发布时间】:2019-10-05 17:15:51
【问题描述】:

使用 return 语句后,我需要在数据框中输出我的输出。 print() 显示我的输出,但 return 语句给了我:{}

这是我当前的打印代码Entire Code with current output

这是我的输入数据框格式:

这是我的代码主体

prediction = {}
df2 = df.rename(columns={'date': 'ds','load': 'y', 'account': 'article'})
list_articles = df2.article.unique()

def get_prediction(df):
    prediction = {}
    f2 = df.rename(columns={'date': 'ds','load': 'y', 'account': 
    'article'})
    list_articles = df2.article.unique()  
 for article in list_articles:
     article_df = df2.loc[df2['article'] == article]
     my_model = Prophet(weekly_seasonality= True, 
     daily_seasonality=True,seasonality_prior_scale=1.0)
     my_model.fit(article_df)
     future_dates = my_model.make_future_dataframe(periods=6, freq='MS')
     forecast = my_model.predict(future_dates)
     prediction[article] = forecast
return prediction

我需要关于预测的 return 语句来执行打印显示的内容。目前使用“return prediction”返回的所有内容 = {} - 一个空字典

【问题讨论】:

  • 您的 for 循环似乎在缩进的函数之外。一个函数的整个主体应该在相同的缩进级别
  • 我已经睡了 15 个小时睡一觉。此时休息一下会更有效率,这样您就可以发现简单的错误,例如 for 循环的缩进级别和 return 语句错误。
  • 谢谢,但我解决了这个问题,我现在返回 {} 但打印工作正常
  • 抱歉,Stack Overflow 旨在收集未来对其他人有用的问题,并提供解决问题的答案。这也意味着问题和答案是“静态的”,因为您不能使用同一个问题一个接一个地解决不断发展的相关问题;编辑您的问题会使每次给出的答案无效。我已回滚您的编辑。
  • @MartijnPieters 我确实编辑了问题 - 这与缩进错误不同 - 我返回的内容完全不同 - 请协助

标签: python pandas facebook-prophet


【解决方案1】:

你需要修正你的缩进:

prediction = {}
df2 = df.rename(columns={'date': 'ds','load': 'y', 'account': 'article'})
list_articles = df2.article.unique()

def get_prediction(df):
    prediction = {}
    f2 = df.rename(columns={'date': 'ds','load': 'y', 'account': 
    'article'})
    list_articles = df2.article.unique()  
    for article in list_articles:
        article_df = df2.loc[df2['article'] == article]
        my_model = Prophet(weekly_seasonality= True, 
        daily_seasonality=True,seasonality_prior_scale=1.0)
        my_model.fit(article_df)
        future_dates = my_model.make_future_dataframe(periods=6, freq='MS')
        forecast = my_model.predict(future_dates)
        prediction[article] = forecast
    return prediction

for循环需要在函数下,for循环的内容需要在for循环下,return需要在函数下。

【讨论】:

  • 我试过了,得到了这个:{}作为我的输出
  • print(list_articles) 返回什么?
  • 它打印:array(['Acct301', 'Acct302', 'Acct303'], dtype=object)
  • @grim_reaper_1988:这是一个不同的问题;这个答案解决了您为什么会遇到语法错误的直接问题。你真的需要让自己休息一下,因为现在睡眠不足是你的敌人。
  • 好的,我改变了整个问题