我有一个包含30列的数据框。我将整个数据帧传递给一个函数,并通过numpy向量化返回值。但是它不起作用,并给我一个错误,即标量变量的索引无效。 T2恒定为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))
答案 0 :(得分:2)
链式布尔掩码与&
一起按位AND
,它被称为boolean indexing
,并且是矢量化操作。另外,为了提高性能,还添加了values
以便通过numpy数组进行比较:
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)