代码:
import pandas as pd
import numpy as np
df=pd.DataFrame([[2,5,6,10,11,12,15],
[3,4,5,7,10,15,16],
[7,10,15,16,19,20,21]],index=['0','1','2',],columns=list('abcdefg'))
s=eval(input('请输入一个30以内的整数:'))
for row in df.itertuples():
if row[1]<s<row[len(row)-1]:
s=s
while s not in row:
s=s+1
elif s<=row[1]:
s=row[1]
elif s>=row[len(row)-1]:
s=row[len(row)-1]
print(s)
问题:
输入一个数,要判断该数是否在dataframe的每一行中:如果在就返回输入的数;如果不在,就返回输入数后最近的一个数,且该数在dataframe对应行中。
按照上述代码,如果输入的s=3时,print(s)后,应该返回的是“5,3,7”,但最终返回的是“5,5,7”;
如果输入的s=7时,print(s)后,应该返回的是“10,7,10”,但最终返回的是“10,10,10”。
出现上述问题的原因是什么呢?求解答!谢谢!