【问题标题】:Why does this ID generating code make a KeyError: -1为什么这个 ID 生成代码会产生 KeyError: -1
【发布时间】:2020-07-17 18:17:30
【问题描述】:

我这部分代码的问题导致 KeyError: -1

你们中有人知道这可能是什么原因吗?

for i in range(len(B130317)):
    if B130317['LON'][i] != B130317['LON'][i-1]:
        currentID += 1
    newID.append(currentID)

【问题讨论】:

  • 我猜你的if 声明在第一次迭代中。您正在尝试访问 i - 1,而在第一次迭代中,i 为 0。

标签: python pandas dataframe spyder keyerror


【解决方案1】:

基于@Badgy 的cmets:

for i in range(1,len(B130317)):
    if B130317['LON'][i] != B130317['LON'][i-1]:
        currentID += 1
    newID.append(currentID)

或:

for i in range(len(B130317)-1):
    if B130317['LON'][i] != B130317['LON'][i+1]:
        currentID += 1
    newID.append(currentID)

【讨论】:

    【解决方案2】:

    如果B130317['LON'] 是一个空列表,则B130317['LON'][i-1] for i=0 将抛出KeyError: -1 异常。 我不知道您的业务逻辑是什么,但也许您应该考虑将循环更改为:

    for i in range(len(B130317['LON'])):
    # your logic
    

    【讨论】:

    • 你说得对,感谢您的更正。它没有解决问题,但它很好:)
    猜你喜欢
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2016-04-04
    • 2020-09-09
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多