将数据帧作为函数参数传递时,Numpy向量化不起作用

时间:2018-12-21 13:48:12

标签: python pandas numpy

我有一个包含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))

1 个答案:

答案 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)