import numpy as np import pandas as pd data = [["John",1,3],["Jenna",3,5],["Jay",7,10],["Jose",11,16]]df = pd.DataFrame(data,columns=['Name','LL','UL'])print(df['LL'])print(df['LL'].values)desired = int(input("Enter Desired: "))i = 0df['Best'] = 0for elem in df['LL']: lowerLim = df.loc[[i],['LL']].values upperLim = df.loc[[i],['UL']].values print(lowerLim[0][0]) print(upperLim[0][0]) if(desired >= int(lowerLim[0][0]) & desired <= int(upperLim[0][0])): sortNum = 0 print("Execute") else: sortNum = desired - elem print(sortNum) print() df.loc[[i],['Best']] = sortNum i = i + 1print(df.sort_values(by='Best'))
即使我输入2作为期望值,代码仍然会在所有元素上执行if语句,但预期应该是仅对第一个元素执行if语句,因为2 > 1,而对于其他所有元素应执行else语句。但实际情况是在每个元素循环中都打印了“Execute”,这证明了我的观点,即它确实执行了if语句。
回答:
检查并更正此行的括号为:
if( (desired >= int(lowerLim[0][0])) & (desired <= int(upperLim[0][0])) ):
尝试一下,看看是否能得到预期的结果。完整的跟踪记录如下:
0 11 32 73 11Name: LL, dtype: int64[ 1 3 7 11]Enter Desired: 213Execute035-1710-51116-9 Name LL UL Best3 Jose 11 16 -92 Jay 7 10 -51 Jenna 3 5 -10 John 1 3 0