Я использую следующий код для удаления постоянных столбцов и столбцов с определенными заголовками.
Есть ли более питонический способ сделать это?
import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from sklearn.tree import DecisionTreeClassifier
X, y = make_classification(n_samples=1000,
n_features=6,
n_informative=3,
n_classes=2,
random_state=0,
shuffle=False)
# Creating a dataFrame
df = pd.DataFrame({'car':X[:,0],
'ball':X[:,1],
'Feature 3': 5,
'Feature 4':X[:,3],
'Feature 5':X[:,4],
'Feature 6':X[:,5],
'Class':y})
one = df.std().eq(0).reindex(df.columns, fill_value=True)
two = one.index.str.contains("ball|car")
all = one| two
df_auto = df.loc[:, ~all].copy()
@jezrael, пожалуйста, проверьте обновление
@jezrael я добавил столбец с постоянным значением
На мой взгляд, ваше решение идеально.
@jezrael хорошо, я думаю, что тогда мне следует удалить свой вопрос, я подумал, что может быть одна строка, которая может выполнить это без создания копий и копирования столбцов
Ответ есть, поэтому удалить его невозможно. Будь свободен прими ответ;)






Я не вижу очевидных проблем с вашей текущей логикой. "Pythonic" субъективен, и ниже я предлагаю другое решение.
Это альтернативный метод на основе numpy + .iloc, который вы можете предпочесть:
n1 = np.where(np.std(df.values, axis=0) == 0)[0]
n2 = np.where(df.columns.str.contains('ball|car'))[0]
df_auto = df.iloc[:, np.delete(range(len(df.columns)), np.hstack((n1, n2)))].copy()
Можете ли вы добавить образец данных?