收到一只叮咚
您可以使用np.where():import pandas as pddf = pd.DataFrame(data={'hand' : ['left','left','both','both'], 'exp_force' : [25,28,82,84], 'left_max' : [38,38,38,38], 'both_max' : [90,90,90,90]})df['ratio'] = np.where((df['hand']=='left'), df['exp_force'] / df['left_max'], df['exp_force'] / df['both_max'])dfOut[42]: hand exp_force left_max both_max ratio0 left 25 38 90 0.6578951 left 28 38 90 0.7368422 both 82 38 90 0.9111113 both 84 38 90 0.933333或者,在现实生活中,如果您有很多条件和结果,那么您可以使用np.select(),这样您就不必np.where()像我在旧代码中所做的那样不断重复您的语句。最好np.select在这些情况下使用:import pandas as pddf = pd.DataFrame(data={'hand' : ['left','left','both','both'], 'exp_force' : [25,28,82,84], 'left_max' : [38,38,38,38], 'both_max' : [90,90,90,90]})c1 = (df['hand']=='left')c2 = (df['hand']=='both')r1 = df['exp_force'] / df['left_max']r2 = df['exp_force'] / df['both_max']conditions = [c1,c2]results = [r1,r2]df['ratio'] = np.select(conditions,results)dfOut[430]: hand exp_force left_max both_max ratio0 left 25 38 90 0.6578951 left 28 38 90 0.7368422 both 82 38 90 0.9111113 both 84 38 90 0.933333