#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. Пожалуйста, пожалуйста, примите ответ, если все в порядке.