python 2. 0 除法的时候用 1.0/2.0 不要用1/2
df['g4'] = df[[0,4]].apply(lambda x:((x[1]/x[0])**(1.0/4.0)-1) if (x[1]>0 and x[0]>0) else np.nan,axis=1)
不要忘记 axis=1
用 .loc的时候不会出settingwithcopywarning警告
g=df.loc[:,['STOCKCODE']]
g.loc[:,'g4'] = df.loc[:,['tn4','tn0']].apply(lambda x:((x[1]/x[0])**(1.0/4.0)-1) if (x[1]>0 and x[0]>0) else np.nan,axis=1)
g.loc[:,'g3'] = df.loc[:,['tn3','tn0']].apply(lambda x:((x[1]/x[0])**(1.0/3.0)-1) if (x[1]>0 and x[0]>0) else np.nan,axis=1)
g.loc[:,'g2'] = df.loc[:,['tn2','tn0']].apply(lambda x:((x[1]/x[0])**(1.0/2.0)-1) if (x[1]>0 and x[0]>0) else np.nan,axis=1)
g.loc[:,'g1'] = df.loc[:,['tn1','tn0']].apply(lambda x:((x[1]/x[0])**(1.0/1.0)-1) if (x[1]>0 and x[0]>0) else np.nan,axis=1)