You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas函数内循环无法终止求助:基于用户输入筛选DataFrame行

问题分析与代码修正

核心问题1:外层循环无法终止

你的条件判断if Op1 and Op2 in Ndata[" workclass"]:逻辑错误,Python会将其解析为if (Op1) and (Op2 in Ndata[" workclass"])——只要Op1不是空字符串(用户输入默认非空)且Op2在目标列中,就会触发条件,但这不符合你“两个输入都必须在列中”的需求。正确写法需要分别判断两个值是否存在:

if Op1 in Ndata[" workclass"] and Op2 in Ndata[" workclass"]:

核心问题2:内层循环逻辑失效

if Op3 == 1 or 2 :的写法完全错误,Python会将2视为布尔值True,导致这个条件永远成立,不管用户输入什么都会直接退出内层循环。同时内层循环缺少重新获取输入的逻辑,用户输入错误后无法修正。正确写法如下:

if Op3 == 1 or Op3 == 2:

修正后的完整代码

def option3():
    print("---------------------------")
    print("please select from the following options")
    print(Ndata[" workclass"].unique())
    print("---------------------------")
    loop3 = True
    while loop3:
        print("---------------------------")
        Op1 = input('Please enter first working class: ')
        Op2 = input('Please enter second working class: ')
        print("Options selected ", Op1, "&", Op2)
        print("---------------------------")
       
        # 修正外层条件判断逻辑
        if Op1 in Ndata[" workclass"] and Op2 in Ndata[" workclass"]:
                loop3 = False
                sub = Ndata.loc[Ndata[" workclass"].isin([Op1, Op2])]
                print("---------------------------")
                print("Please select from the following")
                print("[1] Most educated countries ")
                print("[2] Marital status ")
                print("---------------------------")
                loop4 = True
                while loop4:
                    Op3 = int(input("Please enter 1 or 2 : "))
                    # 修正内层条件判断逻辑
                    if Op3 == 1 or Op3 == 2 :
                            loop4 = False
                    else:
                        print('Please select 1 or 2')
        else: 
            print("Please check", Op1, "&", Op2, " are in the working class")
            print(Ndata[" workclass"].unique())

内容的提问来源于stack exchange,提问作者Keith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:45:41