Нахождение целого индекса фрейма данных Python после выполнения логической операции

#python #numpy #pandas #scipy

#python #numpy #pandas #scipy

Вопрос:

У меня есть целые числа ‘high’ и ‘low’ (оба целочисленных значения, весь мой набор данных — это числа, содержащие столбцы со значениями int и float.) и фрейм данных с именем ‘data’, и я хочу узнать целочисленный индекс строк, который удовлетворяет следующему условию:

Условие

  1. Если все столбцы в фрейме данных отклоняются как от максимума, так и от минимума, удалите всю эту строку.

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

Количество столбцов в считываемых данных может варьироваться, следовательно, мой код должен быть динамическим. Мой код :

 li = {}
variables = list(data.columns.values)   
for x in variables :
    li[x] = []
le = len(variables)

for x in range(0,le):
    li[(variables[x])].append( data[~(data[(variables[x])]>credentials[(variables[x])]['low']) amp; (data[(variables[x])]<credentials[(variables[x])]['high']) ].index)

vals = li.values()
uniq  = set([vals[0]]) # this line shows error.

for lst in vals[1:]:
     uniq.intersection_update(lst)

result_rows  = list (uniq)

data.drop(data.index[result_rows])
  

Я пытаюсь выполнить условие, выбрав индексы данных! = отклонение
но получение целочисленного индекса, похоже, является проблемой. Не удалось найти правильные ответы в сети.

мой ‘li’ dict выглядит следующим образом

 {u'Combed': [Int64Index([148, 159], dtype='int64')],
 u'OE': [Int64Index([], dtype='int64')],
 u'P': [Int64Index([], dtype='int64')],
 u'PCH': [Int64Index([126, 127, 128, 129, 130, 131, 132, 133, 134, 136, 137, 138, 139, 141, 142, 143, 144, 145], dtype='int64')],
 u'PV': [Int64Index([32, 34, 35, 36, 37, 81, 85], dtype='int64')],
 u'V': [Int64Index([], dtype='int64')]}
  

Комментарии:

1. Какую ошибку вы видите? Если это так TypeError: 'int' object is not iterable , это потому, что вы передаете одно целое число в set оператор, когда он ожидает итерируемый объект. vals[0] является целым числом, поэтому ваш цикл for добавляет только один элемент в этот список. Если это ожидается, и вы хотите передать список отдельных элементов в оператор set, вам нужно изменить его на set([vals[0]]) .

2. @SiHa: извините за опечатку, которую я ввел точно так, как вы упомянули, я получаю сообщение об ошибке «unhashable type: Int64Index», мне нужен способ найти целое число индекса. li [столбец], похоже, имеет значения индекса, а не его целочисленное значение.

3. @user3792799: Ваше окончательное требование — найти строки, в которых все значения в этой конкретной строке находятся в пределах low и high?