Создание нового столбца на основе нескольких столбцов pandas

#python #pandas

#python #pandas

Вопрос:

Я пытаюсь создать категории на основе нескольких столбцов в pandas, но для запуска требуется вечность, поэтому я не уверен, что это правильно. Я ушел на 30 минут и все еще работал, поэтому остановил его. Я пытаюсь создать новый столбец на основе нескольких других столбцов (в моих фактических данных это около 15 столбцов). Однако, когда я пытаюсь использовать меньший набор данных, это происходит очень быстро. Есть предложения?

 other_cols = ['col1', 'col2', 'col3', 'col4', 'col5']


def labels(row):
    if ((row['col 6'] > 1) amp; (row[other_cols] < 1)).all():
        return 'Yes'
    if ((row['col 6'] >1) amp; (row['col 7'] >1) amp; (row[other_cols] <1)).all():
        return 'Maybe'
    if ((row['col 6'] <1) amp; (row['col 7']>1) amp; (row[other_cols] <1)).all():
        return 'no'

df['category'] = df.apply(lambda row: labels(row), axis=1)
 

Ответ №1:

Возможно, вы можете попробовать это :

 ther_cols = ['col1', 'col2', 'col3', 'col4', 'col5']


def labels(row):
    elif ((row['col 6'] > 1) amp; (row[other_cols] < 1)).all():
        row['category'] = 'Yes'
    elif ((row['col 6'] >1) amp; (row['col 7'] >1) amp; (row[other_cols] <1)).all():
        row['category'] = 'Maybe'
    elif ((row['col 6'] <1) amp; (row['col 7']>1) amp; (row[other_cols] <1)).all():
        row['category'] = 'no'
    else:
        row['category'] = ''

df = df.apply(labels, axis=1)
 

Каков размер вашего набора данных?

Извините, я не могу комментировать, я все еще новичок здесь

Комментарии:

1. Почему это было бы быстрее? Просто любопытно узнать, поскольку я сам новичок. Данные содержат около 15 000 строк и 20 столбцов