#python #pandas
#python #pandas
Вопрос:
У меня есть столбец в моем фрейме данных, который я хочу проанализировать и вернуть определенное значение в новый столбец под названием «Торговля». Данные в анализируемом столбце выглядят следующим образом:
QTY
(1.00)
1,418,999.89
328,536.93
-100
Если значение в столбце количество больше 0, я хочу вернуть «Buy_Code», если нет, верните «Sell_Code»
Я попытался создать функцию для перебора фрейма данных, а затем использовать эту функцию в apply, но она работает неправильно. Я знаю, что существует масса информации по этой теме, но я изо всех сил пытаюсь понять, как это должно быть написано. Спасибо за помощь
def trade_type():
for index,row in df_loan_tape.iterrows():
if row['QTY'] > 0:
df_loan_tape['Trade'] = 'Buy_Code'
else:
df_loan_tape['Trade'] = 'Sell_Code'
df_loan_tape['Trade'] = df_loan_tape['QTY'].apply(trade_type)
Комментарии:
1.
df_loan_tape['Trade'] = np.where(df_loan_tape['QTY'] > 0, 'Buy_Code', 'Sell_Code')
. Не повторяйте строки для простого двоичного выбора, это векторизовано и намного быстрее2.
apply
работает по строкам в цикле Python (следовательно, медленнее), но без явногоfor
синтаксиса цикла. Здесь выapply
создаете функцию, которая сама затем выполняет итерации по строкам. Это двойная итерация массива.3. Спасибо, это сработало хорошо