Попытка перекодировать столбец в зависимости от того, содержит ли он определенную строку - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь обобщить группы, и у меня есть столбец строковых заголовков в кадре данных. Я хочу разделить их в зависимости от того, содержат ли они строку. Групп много, но все они содержат строку "Alpha" "Beta" или "Gamma". Я хотел бы перекодировать новый столбец с этими заголовками. Представленная ниже функция, кажется, не работает так, как я планировал, и я не уверен, что подход с регулярным выражением или np.where будет лучше. Любая помощь с благодарностью.

def recode_func(n):
    for i in n:
        if "Alpha" in i:
            i == "Alpha"
        elif "Beta" in i:
            i== "Beta"
        elif "Gamma" in i:
            i == "Gamma"
        else:
            continue

1 Ответ

0 голосов
/ 04 мая 2018

Одним из способов является итерация списка и использование pd.Series.str.contains:

for item in ['Alpha', 'Beta', 'Gamma']:
    df.loc[df['col'].str.contains(item, regex=False), 'col'] = item

Как и выше, regex=False должно улучшить производительность.

Это будет более эффективно, чем повторять ваш кадр данных по строкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...