我有以下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
错误,或者您必须升级熊猫版本才能出现该错误?答案 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错误,或者您必须升级熊猫版本才能出现该错误?
需要将熊猫升级到未来版本,以免出现错误。