перебирайте панд и фильтруйте истинные результаты - PullRequest
0 голосов
/ 08 июля 2019

У меня есть список серий панд, которые я хочу проанализировать, чтобы определить, есть ли число в каждом индексе, которое в 5 раз больше, чем любое другое число в этом индексе в других списках. Если это правда, я бы хотел, чтобы функция возвращала значение, которое в 5 раз больше. Я написал:

import numpy as np
def check(samples_avg):
    count = 0
    results = []
    filtered = []
    for num in range(len(samples_avg)):
        for i in range(len(samples_avg[num])):
            for j in range(i + 1, len(samples_avg[num])):
                if (np.any(samples_avg[i]) >= (np.all(samples_avg[j] * 5))):
                    count = count + 1
                    results.append((count == len(samples_avg) - 1))
                    filtered = [x for x, y in zip(samples_avg, results) if y == True]
                    print (filtered)

Вывод, на который я надеюсь, для filtered будет списком списков, каждый список содержит только истинные значения из соответствующего ряда в samples_avg. Прямо сейчас функция печатает серию пустых списков, а затем всю серию, которая имеет истинное значение с индексом 0 и прекращает итерацию после этого. Также возвращается:

line 86, in check
if (np.any(samples_avg[i]) >= (np.all(samples_avg[j] * 5))):
IndexError: list index out of range

Как я могу исправить эту ошибку индекса и исправить вывод, чтобы он работал? Любой совет по этой проблеме также будет оценен. Спасибо

...