【发布时间】:2019-03-01 17:16:48
【问题描述】:
我有两个用于调用预测函数的 for 循环。该函数返回预测值,我想将其写入文件或数据框中,以便我可以保存所有预测并在循环范围之外访问它们。我有点卡在这里。让我举例说明。
for country in df['country'].unique():
for channel in df['channel'].unique():
output = pd.DataFrame(columns=['date', 'country',
'channel_id','value'])
x = df[df['country']==country & df['channel']==channel]
pred = forecast(df)
output = output.append(pred)
output.to_csv('forecast.csv')
这是我想做的,但问题是,很明显,每次迭代后数据都会丢失。请提出保存方法。
【问题讨论】:
-
只需将
output.to_csv('forecast.csv')拉出for循环即可。但是,即使文件不断被覆盖,您将在每次写入时按顺序添加更多数据,因此数据最终应该都在那里 -
我试过了。那是一个空文件。显然是因为如果我把它拿出来,它就会超出范围。真的不确定
-
它不能超出您所展示的范围。但是,我们也看不到您如何初始化
output -
刚刚编辑并添加了输出初始化,如果我在循环之前初始化输出会起作用吗? @roganjosh
-
哦,现在问题很清楚了。您需要将
output = pd.DataFrame(columns=['date', 'country', 'channel_id','value'])拉出两个for循环;您不断践踏 df 并在每次迭代时重置它。在循环之前定义。
标签: python pandas file loops dataframe