Панды извлекают часть строки из столбца в фрейме данных и хранят ее в новом столбце

#python #pandas #string #dataframe #extract

Вопрос:

У меня есть приведенный ниже код для создания фрейма данных

 import pandas as pd df = {'Connection':['Home 10Mbps','Broadband 5 Mbps','128 Kbps Internet','Discounted 512Kbps 2 years contract']} df = pd.DataFrame (df) df  

Мне нужен способ извлечь только пропускную способность из столбца «Подключение» и сохранить результат в новом столбце с именем, например «Пропускная способность», чтобы выглядеть примерно так:

Пропускная способность

10 Мбит / с

5 Мбит / с

128 Кбит / с

512 Кбит / с

Комментарии:

1. Ваши данные не соответствуют шаблону, поэтому их анализ невозможен или, по крайней мере, излишне сложен. Поскольку у вас уже есть данные, почему бы вам не поместить их в отдельный столбец при инициализации фрейма данных?

2. Спасибо за ваш ответ, на самом деле это часть набора данных о 300 тысячах записей, и мне нужно сделать это в процессе очистки и организации данных

Ответ №1:

Обязательно заполните список всеми возможными форматами

 lst = ['10Mbps', '10 Mbps', '5 Mbps', '128 Kbps', '512Kbps', '512 Kbps'] for i in lst:  df.loc[df['Connection'].str.contains(i), 'bandwidth'] = i  lst1 = [] for j in df.bandwidth:  if " " not in j:  lst1.append((re.sub("[A-Za-z] ", lambda ele: " "   ele[0]   " ", j)[:-1]))  else:  lst1.append(j)  df['bandwidth']=lst1  # output Connection bandwidth Home 10Mbps 10 Mbps Broadband 5 Mbps 5 Mbps 128 Kbps Internet 128 Kbps Discounted 512Kbps 2 years contract 512 Kbps  

Комментарии:

1. Спасибо, это должно сработать, эти данные являются частью записи 300 K, над которой я работаю, все равно мне нужно будет решить, как унифицировать значения; с пробелом или без пробела между номером и единицей пропускной способности, у вас есть какие-либо идеи, как это можно сделать?

2. Я отредактировал ответ, если вы это имели в виду

3. Идеально, Спасибо

4. Пожалуйста, пожалуйста, примите ответ, если все в порядке.