Я пытаюсь получить имена столбцов, которые соответствуют определенной строке "Buy"
для каждой строки фрейма данных (df). Таким образом, если есть 2 столбца, соответствующие "Buy"
, то учитываются оба имени столбца.
Я попробовал приведенный ниже код, который отлично работает, но для его выполнения требуется много времени. Есть ли способ улучшить его производительность, поскольку я вижу, что оператор применения влияет на производительность. Я слышал о применении векторизации/быстрее для повышения производительности, но я не могу понять, как применить его для моего конкретного требования.
Шаг 1:
Получить имена столбцов, содержащие '_buy_sell'
в качестве частичной строки в имени столбца:
[Col_Buy_Sell]==[col for col in df.columns if '_buy_sell' in col]
Шаг 2:
В выбранных столбцах на шаге 1, если какое-либо значение равно 'Buy'
, то все имена этих столбцов перемещаются в поле 'Final_Buy'
. Несколько столбцов разделены знаком ",":
df['Final_Buy']=(df[Col_Buy_Sell] == 'Buy').apply(lambda y: (','.join(df[Col_Buy_Sell].columns[y])), axis=1)
Заранее спасибо!
Пожалуйста, добавьте пример данных и ожидаемый результат.