Конвертировать столбец данных из списка в плавающее - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь создать столбец года с годом, взятым из столбца заголовка в моем фрейме данных.Этот код работает, но столбец dtype является объектом.Например, в строке 1 год отображается как [2013].

Как я могу это сделать, но изменить столбец dtype на float?

year_list = []

for i in range(title_length):
    year = re.findall('\d{4}', wine['title'][i])
    year_list.append(year)

wine['year'] = year_list

Вот заголовок моего кадра данных:

country   designation     points    province               title             year
Italy     Vulkà Bianco     87        Sicily     Nicosia 2013 Vulkà Bianco   [2013]

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Вместо re.findall, который возвращает список строк, вы можете использовать str.extract():

wine['year'] = wine['title'].str.extract(r'\b(\d{4})\b')

Или, если вы хотите соответствовать только 1900-2000s годам:

wine['year'] = wine['title'].str.extract(r'\b((?:19|20)\d{2})\b')

Обратите внимание, что шаблон в str.extract должен содержать хотя бы 1 группу захвата, его значение будет использоваться для заполнения нового столбца.Первое совпадение будет рассматриваться только, поэтому вам, возможно, придется уточнять контекст позже, если это будет необходимо.

Я предлагаю использовать границы слов \b вокруг шаблона \d{4}, чтобы сопоставить 4-значные куски как целые слова.и избегайте частичных совпадений в строках, таких как 1234567890.

0 голосов
/ 02 марта 2019

re.findall возвращает список результатов.Используйте re.search

wine['year'] = [re.search('\d{4}', title)[0] for title in wine['title']]

еще лучше, используйте метод панд extract.

wine['year'] = wine['title'].str.extract(r'\d{4}')

Определение

Series.str.extract(pat, flags=0, expand=True)

Для каждой строки темы в Серии извлекайте группы из первого совпадения регулярного выражения pat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...