Как добавить столбцы в .csv, используя существующие данные в другом столбце? - PullRequest
0 голосов
/ 27 мая 2020

В столбце «Подробности» каждая запись содержит текст «Мобильный» и «Электронная почта». Я хочу разделить номер мобильного телефона и идентификатор электронной почты соответствующих записей в разных отдельных столбцах с помощью кода Python.

Пожалуйста, помогите. Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 27 мая 2020

Вы можете попробовать что-то вроде этого -

import pandas as pd
data = pd.read_csv('AIOS_data.csv')
data['Mobile'] = data['Mobile'].str.extract(r'(Mobile[\d|\D]+Email)')
data['Mobile'] = data['Mobile'].str.replace('[Mobile:|Email:]', '').str.strip()
data['Email']  = data['Email'].str.extract(r'(Email:[\d|\D]+)')
data['Email']  = data['Email'].str.replace('Email:','').str.strip()
0 голосов
/ 27 мая 2020

Без предоставления полного кода, я думаю, вам нужно сделать три шага:

  1. Прочитать csv-файл в память. Python имеет удобный модуль под названием csv ( документация )

  2. Как только вы это сделаете, вы можете перебирать каждую строку и искать в detail для номера мобильного телефона и адреса электронной почты. Если detail всегда записывается одинаково, вы можете просто использовать для этого метод str.find() ( документация ).

Например

detail = "Address: 108/81-B, METTU STREET, SE...KKAL TAMIL NADU 637409 Mobile: 9789617285 Email: Leens1794@gmail.com"
mobile_start = detail[detail.find("Mobile:")+8:]  # => '9789617285 Email: Leens1794@gmail.com'
mobile = mobile_start[:mobile_start.find(' ')]  # => '9789617285'

(то же самое для электронной почты)

Вы сохраняете результаты (мобильный телефон и электронная почта) в новом столбце и экспортируете их в csv, снова используя модуль `` csv ''.
0 голосов
/ 27 мая 2020

Используйте Series.str.extract с регулярным выражением для значений фильтра между значениями Mobile и Email, \s* означает ноль или несколько пробелов, а (.*) означает извлечение любого значения между:

df[['Mobile','Email']] = df['Details'].str.extract('Mobile:\s*(.*)\s+Email:\s*(.*)')

Если хотите, также обращайтесь:

cols = ['Address','Mobile','Email']
df[cols] = df['Details'].str.extract('Address:\s*(.*)\s*Mobile:\s*(.*)\s+Email:\s*(.*)')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...