Python тестирует каждый элемент в списке, чтобы выстроить элементы в кадре данных, чтобы получить логический кадр данных - PullRequest
0 голосов
/ 21 октября 2019

Я хотел бы проверить каждый элемент в списке

[5, 100, 15, 7]

для строк в кадре данных ниже. Тестирование списка [0] для всех элементов в первой строке и списка [1] для всех элементов во второй строке и т. Д.

         sample1 sample2 sample3 sample4 sample5
   data1       1       6      10      12       3
   data2      10     200     250      80      20
   data3      13      14       2      17       8
   data4       6       6       5      10       5

Так что, если элемент списка> элемент строки, выходной кадр данных будет:

        sample1 sample2 sample3 sample4 sample5
data1   False   True    True    True    False
data2   False   True    True    False   False
data3   False   False   False   True    False
data4   False   False   False   True    False

или эквивалент:

       sample1  sample2 sample3 sample4 sample5
data1        0        1       1       1       0
data2        0        1       1       0       0
data3        0        0       0       1       0
data4        0        0       0       1       0

Предполагается, что это может быть сделано с помощью iterrows (), но не может заставить его работать. Мои извинения, если я кросс-пост, но я не мог найти предыдущий ответ.

Ответы [ 3 ]

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

Я предполагаю, что ваши данные - это фрейм данных Pandas. В этом случае:

ref = pd.Series([5,100,15,7], index=df.index)
df.gt(ref, axis=0)

Вывод:

       sample1  sample2  sample3  sample4  sample5
data1    False     True     True     True    False
data2    False     True     True    False    False
data3    False    False    False     True    False
data4    False    False    False     True    False
0 голосов
/ 21 октября 2019

Давайте определим ваш случай с Pandas и Numpy:

import pandas as pd
import numpy as np

M = np.array([[1,       6,      10,      12,       3],
              [10,     200,     250,      80,      20],
              [13,      14,       2,      17,       8],
              [6,       6,       5,      10,       5]])
df = pd.DataFrame(M)

reference = np.array([5, 100, 15, 7])

Затем вы можете вызвать сравнение для столбца следующим образом:

df.apply(lambda x: x < reference, axis = 0)
0 голосов
/ 21 октября 2019

Вы можете воспользоваться вещанием , используя массив Numpy:

arr = np.array([5, 100, 15, 7])
result = df > arr[:, None]
print(result)

Вывод

       sample1  sample2  sample3  sample4  sample5
data1    False     True     True     True    False
data2    False     True     True    False    False
data3    False    False    False     True    False
data4    False    False    False     True    False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...