Перебирайте строку и добавляйте значения в список, используя pandas - PullRequest
0 голосов
/ 15 января 2020

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

Variations
Size| Medium; Large; Xlarge; 2Xlarge; 3Xlarge; 4Xlarge; 5xXlarge; 
Size| Medium; Large; Xlarge; 2Xlarge; 3Xlarge; 4Xlarge; 5xlarge; 
Sizes| Small - ( only one mic tab); Medium; Large; Xlarge; 2Xlarge; 3Xlarge; 4Xlarge; 5Xlarge; 
Sizes| Small - ( only one mic tab); Medium; Large; Xlarge; 2Xlarge; 3Xlarge; 4Xlarge; 5Xlarge; 
SIZE - COLOR| L/XL - Lime; 2XL/3XL - Lime; 

Вот что я пробовал до сих пор.

def size_extractor(data):

    size_list = []

    for char in data:
        if char == "|":

            if char == " ":
                continue

                size_list.append(char)

            elif char == ";":
                continue

    print(size_list)

    df['Variations'].apply(size_extractor)

Я пытаюсь использовать "|", чтобы начать извлечение и захватить символы в диапазоне от " " до ";".

В итоге получается список, подобный этому [Medium, Large, Xlarge, 2Xlarge, 3Xlarge, 4Xlarge, 5xXlarge]

Следует Я переделываю через некоторое время l oop?

Ответы [ 2 ]

0 голосов
/ 15 января 2020
def size_extracter(data):
    print(data)
    size_list = []
    size = ""

    for char in data:
        if char == "|":
            size_list.append(size)
            continue
        elif char == " ":
            size = ""
            continue
        else:
            size = size + char

    print(size_list)





df['Variations'] = df['Variations'].str.replace(r'^[^|]*\|\s*', '').str.replace(';', '|', regex=False)

df['Variations'].apply(size_extracter)
0 голосов
/ 15 января 2020
import pandas as pd

d = {'Variations': ['Size| Medium; Large; Xlarge; 2Xlarge; 3Xlarge; 4Xlarge; 5xXlarge; ',
                    'Size| Medium; Large; Xlarge; 2Xlarge; 3Xlarge; 4Xlarge; 5xlarge; ',
                    'Sizes| Small - ( only one mic tab); Medium; Large; Xlarge; 2Xlarge; 3Xlarge; 4Xlarge; 5Xlarge;',
                    'Sizes| Small - ( only one mic tab); Medium; Large; Xlarge; 2Xlarge; 3Xlarge; 4Xlarge; 5Xlarge; ',
                    'SIZE - COLOR| L/XL - Lime; 2XL/3XL - Lime;']}

df = pd.DataFrame(data=d)


def size_extractor(data):
    size_list = list(map(lambda x: x.strip(), data.split('|')[1].split(';')))
    print(size_list)


df['Variations'].apply(size_extractor)

Output

Пояснение кода

data.split('|')[1]: разбивает данные на '|' и мы используем более позднюю часть

split(';'): разбивает данные на ';'

lambda x: x.strip() с map(): удаляет пробелы до и после строк

list(): используется для доступа к выходу генератора map()

...