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

У меня есть фрейм входных данных и список кортежей. Используя список кортежей, которые я буду использовать для фильтрации фрейма данных. Кортеж имеет следующую структуру:

    [(column_name1, min_value1, max_value1),(column_name2, min_value2, max_value2),....,(column_namen, min_valuen, max_valuen)]

Как перебрать список кортежей, зная условие max и min для кадра данных, который мне дан? Данные имя_столбца соответствуют именам столбцов во фрейме данных, поэтому нет необходимости проверять наличие столбца.

Спасибо!

1 Ответ

0 голосов
/ 01 октября 2019

Попробуйте использовать оператор pd.Series.between:

import pandas as pd
import random
df = pd.DataFrame([{k: random.randint(0, 100) for k in 'abcde'} for i in range(10)])
df
     a   b   c   d   e
0   35  60  24  13  27
1   86  11  18  60  96
2   61  68  94   9  68
3   67   2  75  47   9
4   79  94   6  60   4
5   50  75  13  67  72
6  100   5  46  46  91
7   11  67  26  44  82
8   89   6   8  53  30
9   71  73  17   5  66


criteria = [('b', 4, 35), ('c', 20, 99)]

for col, _min, _max in criteria:
    # this is a series of type bool you can use
    # to filter your column
    mask = df[col].between(_min, _max)

    # this will get the values from that particular
    # column that satisfy the condition (condition is true)
    df[col][mask]

1    11
6     5
8     6
Name: b, dtype: int64


0    24
2    94
3    75
6    46
7    26
Name: c, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...