标签警告过度选择

时间:2018-10-18 07:37:25

标签: pandas

我有以下df

       col1   col2
   A    2       3
   B    4       5 
   E    6       7

我想生成一个new_df,它使用标签选择.loc属性来寻找我感兴趣的行。 为此,我要做的是:

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

使用版本pandas 0.19,我获得以下输出:

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

Nan中未出现的那些索引值输出df值。

现在我将熊猫更新为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'])]

但是现在的问题是输出是:

       col1   col2
   A    2       3
   B    4       5 
   E    6       7

我希望df中不存在的索引值出现在new_df中。

那么我有2个问题:

  • 如何克服此问题以获得符合熊猫建议并消除FutureWarning的期望输出?
  • FutureWarning是否意味着从一天到另一天都会发生KeyError错误,或者您必须升级熊猫版本才能出现该错误?

1 个答案:

答案 0 :(得分:1)

我认为您需要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错误,或者您必须升级熊猫版本才能出现该错误?

需要将熊猫升级到未来版本,以免出现错误。