Вместо того, чтобы полагаться на .iloc
, вы можете вернуть фрейм данных, содержащий столбцы, к которым вам нужен доступ, передав список столбцов.
С учетом 2d pandas фрейма данных
df[['col3', 'col4', 'col5', ...]]
будет возвращать то же самое, что и df.iloc[:, 3:]
Кроме того, вы можете присвоить столбцам новые значения, например:
df[['col3', 'col4', 'col5', ...]] = SOME TRANSFORMATION OF THE ORIGINAL OBJECT
Так что в вашем случае мы просто напишем:
cols_to_impute = df.columns[3:]
df[cols_to_impute] = imp.fit_transform(df[cols_to_impute])
Кроме того, важно отметить, что список cols_to_impute
может быть в любом порядке, и вы все равно получите те же результаты. Таким образом, вы можете использовать этот метод для случаев, когда вмененные столбцы не находятся в первых трех столбцах и вам не нужно беспокоиться об индексации.