KeyError: 1 Code in python - cannot figure out the issue

2024-04-18 04:37:57 发布

您现在位置:Python中文网/ 问答频道 /正文

这段代码过去有用,现在不行了。因为我一辈子都搞不清是怎么回事。我猜这和for循环有关,但仅此而已。在

import pandas as pd

LastFY = 2017
n = 15

DeclRate = 0.1
Res = 442.364
LFY_Vol = 27.8

Col_Names = ['Year', 'Reserves', 'Prod']
df = pd.DataFrame(columns=Col_Names)
df_add = pd.DataFrame(columns=Col_Names)

df['Year'] = [LastFY]
df['Prod'] = [LFY_Vol]
df['Reserves'] = [Res]

for i in range(1, n+1):

    FY = df['Year'][i-1] + 1
    if df['Prod'][i-1] * (1 - DeclRate) > df['Reserves'][i-1]:
    Prod_A = df['Reserves'][i-1]
    else:
        Prod_A = df['Prod'][i-1] * (1 - DeclRate) if i < n else df['Reserves'][i-1]
    Reserves_A = df['Reserves'][i-1] - Prod_A

    df_add['Year'] = [FY]
    df_add['Reserves'] = [Reserves_A]
    df_add['Prod'] = [Prod_A]

df = df.append(df_add, ignore_index=True)
df.round(0).style

谢谢。在

这是我得到的错误代码。。。在

^{pr2}$

Tags: adddataframedffornamesrescolprod
1条回答
网友
1楼 · 发布于 2024-04-18 04:37:57

您已将n定义如下:

n = 15

然后用一行定义一个数据帧:

^{pr2}$

然后迭代range(1, 16)

for i in range(1, n+1):
    FY = df['Year'][i-1] + 1

但是,由于数据帧只有一行索引为0df['Year'][1]将返回KeyError。这正是你应该期待的。在

你还没有解释你要达到什么目的。您可以在a new question中执行此操作。上面的解释描述了为什么你得到了你的错误。一般来说,print是一个有用的函数,用于确定每个阶段发生了什么。在

相关问题 更多 >