Как я могу преобразовать код, который разделяет '|' в функцию - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть колонка под названием бренды. Строки выглядят так:

 |Brands|

|Gucci|Prada|
|Versace|Levis|Adidas|
|Champion|Diesel|Nike|

У меня есть код для разделения '|' из колонки брендов.

split_columns=['Brands']

for brand in split_brands:
    brands_data[brand]=brands_data[brand].apply(lambda x: x.split('|'))

Этот код хорошо работает и разбивает '|'.

Мой вопрос:

Как я могу преобразовать этот код в функцию , Я хотел бы научиться делать это.

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Я буду использовать Google Do c Формат строки и преобразую ваш код. Важно назвать ваши функции и аргументы понятными, чтобы их можно было легко понять и интерпретировать


def split_columns(brands, brands_data):
    """Used to split column string on the `|` character

    Args:
        brands (str): String containing brand names separated
            by `|` character to be seperated
        brands_data (pandas df column): Dataframe column containing the information

    Returns:
        The updated dataframe column
    """    

    for brand in brands:
        brands_data[brand]=brands_data[brand].apply(lambda x: x.split('|'))

    return brands_data

При этом я чувствую, что что-то чувствует отсюда.

Если вы просто передаете столбец, и все, что вам нужно, это вернуть столбец так, чтобы каждая запись теперь была вложенным списком ...

'1|Versace|Levis|Adidas|' --> ['1','Versace','Levis','Adidas']

Самый простой способ - не использовать функцию и просто вызвать .apply() напрямую:


Предполагая, что фрейм данных с именем df и строка фрейма данных с именем Brands

>>>df
                    Brands
0           0|Gucci|Prada|
1  1|Versace|Levis|Adidas|
2  2|Champion|Diesel|Nike|

>>>df["Brands"] = df["Brands"].apply(lambda row: row.split('|'))
>>>df
                          Brands
0            [0, Gucci, Prada, ]
1  [1, Versace, Levis, Adidas, ]
2  [2, Champion, Diesel, Nike, ]

Надеюсь, это разъяснение может помочь вам

0 голосов
/ 13 апреля 2020

Сделай это

def func(split_brands):
    for brand in split_brands:
        brands_data[brand]=brands_data[brand].apply(lambda x: x.split('|'))
...