If语句,ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()

问题描述 投票:0回答:1

我将这段代码用于if语句:

for col in df2.columns:
    a = np.array(df2[col])
    p98 = stats.scoreatpercentile(a, 98)
    p5 = stats.scoreatpercentile(a, 5)
    maxv = df2.max(axis=0)
    minv = df2.min(axis=0)
    ratiomax = maxv/p98
    print(ratiomax)
    ratiomin = minv/p5
    print(ratiomin)

    if (ratiomax <= 1.1).bool() == True:
        maxv = maxv
    else: maxv = p98

    if ratiomin <= 0.2:
        minv = minv
    else: minv = 95

两种类型的if语句均无效,并引发错误:

ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()

先前对此错误给出的解决方案是np.where,并从数据帧中选择选择性值,但我的是关于if语句。

请帮助。

谢谢

python-3.x if-statement valueerror
1个回答
0
投票

有一些奇怪的代码段:

for col in df2.columns:
    a = np.array(df2[col])
    p98 = stats.scoreatpercentile(a, 98)
    p5 = stats.scoreatpercentile(a, 5)
    maxv = df2.max(axis=0)
    minv = df2.min(axis=0)
    ratiomax = maxv/p98
    print(ratiomax)
    ratiomin = minv/p5
    print(ratiomin)

    # no need for bool() conversion
    # maxv = maxv ... eles is unnecessary
    # this is the shorter version of your code:
    if not ratiomax <= 1.1:
        maxv = p98

    # same here
    if not ratiomin <= 0.2:
        minv = 95

由于缺少df2,np和统计信息的样本值而未经测试

© www.soinside.com 2019 - 2024. All rights reserved.