【发布时间】:2018-02-08 21:57:15
【问题描述】:
这段代码返回 10,这是我所期望的
for i in range(5):
if i == 0:
output = i
else:
output += i
print(output)
为什么这段代码只返回在语句的 if 部分创建的数据框(即当 i ==0 时)?
for i in range(5):
if i == 0:
output = pd.DataFrame(np.random.randn(5, 2))
else:
output.append(pd.DataFrame(np.random.randn(5, 2))
print('final', output)
以上是我在使用以下代码时遇到的问题的 MVCE:
如有兴趣,请提供更多上下文:
for index, row in per_dmd_df.iterrows():
if index == 0:
output = pd.DataFrame(dmd_flow(row.balance, dt.date(2018,1,31),12,.05,0,.03,'monthly'))
else:
output.append(pd.DataFrame(dmd_flow(row.balance, dt.date(2018,1,31),12,.05,0,.03,'monthly')))
print(output)
我有一个输入 DataFrame,每个产品一行包含余额、费率等。我希望每个 DF 行中的数据调用 dmd_flow 函数(返回一个生成器,在 pd.Dataframe() 中调用时返回一个12 个月前瞻性余额预测)根据 dmd_flow 函数中的参数预测每个产品的余额变化。然后,我将添加所有更改以得出余额的净变化(在日期使用 group by 并汇总余额)。
每次调用都会根据需要创建新的 DataFrame:
pd.DataFrame(dmd_flow(row.balance, dt.date(2018,1,31),12,.05,0,.03,'monthly'))
但附加不能扩展输出数据帧。
【问题讨论】:
标签: python pandas for-loop scope