Лучший способ выполнить множество условных выражений на фрейме данных pandas, чтобы пометить набор данных - PullRequest
0 голосов
/ 27 февраля 2020

Я ищу хороший подход для обозначения около 10 000 транзакций + на основе различных условных выражений, потому что это займет много времени, чтобы сделать все вручную.

Например, если имя транзакции содержит «Оболочка» метка будет «Транспорт» или если имя содержит «ресторан», метка будет «Еда».

Одна из возможностей состоит в том, чтобы создать для l oop, но это станет беспорядок спустя некоторое время. Это будет выглядеть так:

for i in df_transactions.index:
    if 'Shell' in df_transactions['Name'][i]:
        df_transactions['Label'][i] = 'Transport'
    if 'Restaurant' etc....

Я также попробовал np.select, но мне нужно назначить одно значение, если одно из нескольких условий является правильным.

Мне нужен помеченный набор данных для обучения классификатора с помощью машинного обучения. У транзакции есть такие функции, как описание, сумма, номер счета и т. Д. c.

Я не в состоянии получить набор помеченных данных деловым партнером или чем-то еще.

Помощь приветствуется!

1 Ответ

1 голос
/ 27 февраля 2020

Сколько существует условий? Если это все еще возможно, вы можете использовать np.where:

df_transactions['Label'] = np.where(df_transactions['Name']=='Shell','Transport',np.where(df_transactions['Name']=='Restaurant','Food',np.where(,,np.where(,,final label))))

Если их много, я сделаю что-то вроде этого:

def load_label():

return {
    'Shell':'Transport',
    'Restaurant':'Food',
    etc
}

def labeling(name):
return LABEL[name] if name in LABEL else name

LABEL= load_label()

df_transactions['Label'] = df_transactions['Name'].map(labeling)

Вам нужно всего лишь указать пару имен и меток и ты хорош для go. Надеюсь это поможет!

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