pyqqiuqiu 2021-10-02 20:04 采纳率: 100%
浏览 32
已结题

对dataframe的每行遍历循环后,再用while进行条件判断,总是出错

代码:

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”。
出现上述问题的原因是什么呢?求解答!谢谢!

  • 写回答

2条回答 默认 最新

  • 想上天的狗 2021-10-02 20:37
    关注

    因为你s改了之后没改回来,像输入3,第一行没找到就增大到可以找到的5,然后第二行开始就一直是用5在作比较

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月10日
  • 已采纳回答 10月2日
  • 创建了问题 10月2日

悬赏问题

  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效