代码之家  ›  专栏  ›  技术社区  ›  JamesHudson81

通过标签警告克服选择

  •  1
  • JamesHudson81  · 技术社区  · 6 年前

    df :

           col1   col2
       A    2       3
       B    4       5 
       E    6       7
    

    new_df 使用selection by label查找我感兴趣的行 .loc 属性。 为了做到这一点,我所做的是:

    new_df= df.loc[['A','B','C','D','E'],:]
    

           col1   col2
       A    2       3
       B    4       5 
       E    6       7
       C   Nan     Nan
       D   Nan     Nan
    

    输出 Nan 中未出现的索引值的值

    现在我已经将pandas更新为0.23,现在 FutureWarning

    FutureWarning: 
    Passing list-likes to .loc or [] with any missing label will raise
    KeyError in the future, you can use .reindex() as an alternative.
    

    为了听从熊猫的建议,我根据熊猫的建议修改了代码行:

    new_df=df.loc[df.index.intersection(['A','B','C','D','E'])]
    

    然而,现在的问题是输出是:

    乙4 5
    

    我希望索引值不存在于 测向 出现在 新建\u df .

    我有两个问题:

    • 我如何克服这个问题,以获得所需的输出坚持熊猫的建议,并消除 未来警告 ?
    • 未来警告 意味着从一天到另一天 KeyError
    1 回复  |  直到 6 年前
        1
  •  1
  •   jezrael    6 年前

    我想你需要 reindex 为避免错误:

    new_df= df.reindex(['A','B','C','D','E'])
    print (new_df)
       col1  col2
    A   2.0   3.0
    B   4.0   5.0
    C   NaN   NaN
    D   NaN   NaN
    E   6.0   7.0
    

    FutureWarning是否意味着从一天到另一天会出现KeyError错误,或者您必须升级pandas版本才能出现错误?

    需要将pandas升级到将来的版本以引发错误。