Объект 'float' не подходит для функции apply () - PullRequest
0 голосов
/ 12 февраля 2020

Я хочу создать новый столбец "Long_Short" и заполнить его строками "Длинные позиции", "Короткие позиции" на основе столбца "sum (Sensi)"

def LongShort(delta):
    if delta > 0:
        return 'Long Positions'
    else:
        return 'Short Positions'

df_instru["Long_Short"] = df_instru['sum(Sensi)'].apply(lambda x: LongShort(x['sum(Sensi)']))

Я получаю эту ошибку:

'float' object is not subscriptable

Я знаю, что могу обойти эту ошибку, применив ее ко всему фрейму данных:

df_instru["Long_Short"] = df_instru.apply(lambda x: LongShort(x['sum(Sensi)']), axis=1)

Но я не хочу делать это, потому что это может быть медленным.

Как я могу устранить эту ошибку, применяя ее только к одному целевому столбцу?

1 Ответ

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

Вы должны переключиться на numpy.where или np.where для краткости, что может оказаться проще и быстрее для того, что вы пытаетесь достичь:

df_instru['Long_Short'] = np.where(df_instru['sum(Sensi)'] > 0, "Long positions","Short positions")
...