如何为DataFrame.sort_values的by参数赋值以降序排序特征重要性?
解决DataFrame排序时
by参数的报错问题 你遇到的问题核心是:你创建的DataFrame只有一列,但没给这列命名,它的默认列名是0,而你之前错误地把行索引(Name_features里的特征名)当成了列名传给by参数,自然会报错。
有两种简单的解决方法:
方法1:直接使用默认列名排序
因为你创建DataFrame时没指定列名,pandas会自动给这列分配名称0,直接把这个值传给by参数即可:
FeatureImportances = pd.DataFrame(Tclf.feature_importances_, index=Name_features).sort_values(by=0, axis=0, ascending=False)
方法2:先给列命名再排序(更规范)
创建DataFrame时显式给列起一个有意义的名字(比如importance),后续排序就可以直接用这个列名:
# 先指定列名创建DataFrame FeatureImportances = pd.DataFrame({'importance': Tclf.feature_importances_}, index=Name_features) # 用自定义列名排序 FeatureImportances = FeatureImportances.sort_values(by='importance', axis=0, ascending=False)
要注意:sort_values的by参数是用来指定列的名称,而你之前想用的Name_features是DataFrame的行索引(index),不是列,所以才会出现找不到列的报错。
内容的提问来源于stack exchange,提问作者Ahmed Adel
相关产品推荐
相关产品推荐

