Я считаю, что вам нужно работать с фреймом данных featureScores
, чтобы сохранить первые 2 функции с наивысшим Score
, а затем использовать эти значения в качестве списка для фильтрации столбцов в исходном фрейме данных. Что-то вроде:
important_features = featureScores.sort_values('Score',ascending=False)['Feature'].values.tolist()[:2] + ['charges']
filtered_df = df[important_features]
sort_values()
необходимо для того, чтобы функции (в случае, если их больше) отсортированы от наивысшей оценки до самой низкой. Затем мы создаем список из первых двух значений столбца Feature
(который уже отсортирован) с помощью .values.tolist()[:2]
. Поскольку вы, кажется, также хотите включить столбец charges
в свой вывод, мы добавляем его вручную с +['charges']
в наш список important_features.
Наконец, мы создаем filtered_df
, выбирая только столбцы important_features
из исходного df
.
Редактировать на основе комментариев:
Если вы можете гарантировать, что charges
будет последним столбцом в исходном df
, тогда вы можно просто сделать:
important_features = featureScores.sort_values('Score',ascending=False)['Feature'].values.tolist()[:2] + [df.columns[-1]]
filtered_df = df[important_features]
Я вижу, что вы ранее определили свой столбец y
с y_clf = numeric_data.iloc[:,-1]
, затем вы можете использовать y_clf.columns
или [df.columns[-1]]
, любой из них должен работать нормально.