Я хотел бы извлечь указанную подстроку c из строкового значения в столбце. В приведенном ниже коде вы увидите, что мне удалось извлечь год, марку и модель.
import pandas as pd
import numpy as np
data = [['year_make_model'],
['1970 Plymouth Hemi Cuda'],
['1970 Dodge Challenger R/T SE Convertible'],
['1971 Plymouth Cuda']]
data = pd.DataFrame(data[1:], columns=data[0])
def create_year_make_model(df):
df['year'] = df.year_make_model.str.extract('(\d\d\d\d)', expand=True)
df['make'] = np.where(df.year_make_model.str.contains('Plymouth'), 'Plymouth',
np.where(df.year_make_model.str.contains('Dodge'), 'Dodge', 'Nan'))
df['model'] = np.where(df.year_make_model.str.contains('Cuda'), 'Cuda',
np.where(df.year_make_model.str.contains('Challenger'), 'Challenger', 'Nan'))
return df.head()
create_year_make_model(data)
year_make_model year make model
0 1970 Plymouth Hemi Cuda 1970 Plymouth Cuda
1 1970 Dodge Challenger R/T SE Convertible 1970 Dodge Challenger
2 1971 Plymouth Cuda 1971 Plymouth Cuda
Теперь мне нужно извлечь все оставшиеся слова (если они есть). Остальные слова составляют «тип» автомобиля (см. Пример ниже).
car_type = ['Hemi', 'R/T SE Convertible', None]
data['type'] = car_type
data
year_make_model year make model type
0 1970 Plymouth Hemi Cuda 1970 Plymouth Cuda Hemi
1 1970 Dodge Challenger R/T SE Convertible 1970 Dodge Challenger R/T SE Convertible
2 1971 Plymouth Cuda 1971 Plymouth Cuda None
До сих пор я безуспешно пробовал много разных подходов. Один из подходов, который я попробовал, - это создание списка на весь год, марки и комбинации моделей word_list = ['Cuda','Challenger','1970','1971','Dodge','Plymouth']
. Затем я сделал для l oop, пытаясь извлечь слова из столбца year_make_model, которых нет в word_list, но я не смог заставить его работать. Я надеюсь, что кто-то знает хитрость для решения моей проблемы, спасибо заранее!