Это на самом деле довольно громоздко, поэтому будет полезно, если у вас есть много столбцов между 'country_Chile':'country_US'
. В приведенном ниже примере я намеренно отбрасываю столбец a
в middle_columns
, беря индексы столбца.
Используется pandas.Index.get_loc
для поиска индексов начального и конечного столбцов, которые затем можно использовать в качестве среза в полном списке столбцов данных. Затем он распаковывает этот список, используя *
, в окончательный список столбцов.
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3], 'b': [2, 3, 4], 'c': [3, 4, 5],
'd': [4, 5, 6], 'wine': ['happy', 'drunk', 'sad'],
'year': [2002, 2003, 2019]})
middle_columns = df.columns[df.columns.get_loc('b'):df.columns.get_loc('d')+1]
all_cols = ['wine', *middle_columns, 'year']
X = df[all_cols]
Причина, по которой ваш текущий подход не работает, заключается в том, что feature_cols_1 = ['price', country_cols, variety_cols, 'year']
возвращает список строк и фреймов данных, которые вы затем пытаетесь использовать в качестве столбцов для второго фрейма данных.