Numpy Vectorization не работает при передаче данных в качестве аргументов функции - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть датафрейм с 30 столбцами.Я передаю весь свой фрейм данных в функцию и возвращаю значения через пустую векторизацию.Однако это не работает и выдает ошибку, что неверный индекс для скалярной переменной.Т2 постоянна со значением 5000

def get_short_incl_MC_rules(df,T2):      
    return 'True' if(df['yield_rank'] < T2 and df['active_events_and_earnings'] == 1 and df['market_cap'] > 500 and df['net_income'] > 0) else False

vectFunc = np.vectorize(get_short_incl_MC_rules)
list(vectFunc(df,T2))

1 Ответ

0 голосов
/ 21 декабря 2018

Цепные логические маски вместе с & для побитового AND, это называется boolean indexing, и это векторизованная операция.Также для повышения производительности добавлено values для сравнения по массивам:

def get_short_incl_MC_rules(df,T2):      
    return (df['yield_rank'].values < T2) & 
           (df['active_events_and_earnings'].values == 1)  & 
           (df['market_cap'].values > 500)  & 
           (df['net_income'].values > 0)

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