Dataframe: добавить перечисленные значения в новый столбец из функции if else - PullRequest
1 голос
/ 18 марта 2019

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

# customers categories based on rfm segmentation
cat = ["champion", "loyal", "big spenders", "almost lost", "hibernating", "lost cheap", "uncategorized"]

def customers_cat(rfm, f, m):
    if rfm == '444':
        return cat[0]
    if f == 4:
       return cat[1]
    if m == 4 :
       return cat[2]
    if rfm == '244':
        return cat[3]
    if rfm == '144':
        return cat[4]
    if rfm == '111':
        return cat[5]
    else:
        return cat[6]

Что я хотел бы: Мой фрейм данных df_cat получить новый столбец df_cat ['category'], где значения равны списку cat на основе условия вфункция.

df_cat['categories'] = customers_cat(df_cat['rfm_score'],
df_cat['f_score'],
df_cat['m_score'])

Ошибка =>

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

1 Ответ

0 голосов
/ 18 марта 2019

это будет считывать датафрейм построчно. axis=1 если вы хотите построчно, Применение:

df_cat['categories'] = df_cat.apply(lambda row: customers_cat(row['rfm_score'],row['f_score'],row['m_score']), axis=1)

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

df_cat['categories'] = df_cat['rfm_score'].apply(lambda row: customers_cat(row), axis=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...