Если утверждение, ValueError: Значение истинности Серии неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all () - PullRequest
1 голос
/ 16 октября 2019

Я использую этот фрагмент кода для оператора 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: Истинное значение Seriesнеоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ()

. Решения, приведенные ранее для этой ошибки, - это np.where и выбор селективных значений издатафрейм, но мой - оператор if.

Пожалуйста, помогите.

Спасибо

1 Ответ

1 голос
/ 16 октября 2019

Есть несколько странных фрагментов кода:

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 и stats

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...