Как передать список условий в метод, который проверяет всю возможную комбинацию условий? - PullRequest
0 голосов
/ 19 июня 2019

У меня есть фрейм данных pandas и список условий:

import pandas as pd
inp = [{'c1':10, 'c2':100, 'c3':120}, {'c1':11,'c2':110,'c3':120}, {'c1':12,'c2':120, 'c3':25}]
df = pd.DataFrame(inp)
filter1 = df.c1>10
filter2 = df.c2>100
filter3 = df.c3>20

, затем я сравниваю условия, в которых строки сохраняются для всех условий одновременно, и я беру эти строки

filter_df=np.diff(((filter1)&(filter2)&(filter3)))
df[np.insert(filter_df, 0, False)]

мой код работает, но как я могу создать метод, в котором я могу передать список условий (возможно, с помощью цикла for или while) и получить обратно df?Что-то вроде следующего:

list_of_condition = [filter1, filter2, filter3]
def get_true(df, list_of_condition):
    filter_df=np.diff(((filter1)&(filter2)&(filter3)))
    df = df[np.insert(filter_df, 0, False)]
    return df
time = get_true(df, list_of_condition)

Здесь я отдельно вставляю фильтры, но я бы хотел передать только df и список условий.и проверить фрейм данных, используя список условий для цикла for.

Спасибо

1 Ответ

1 голос
/ 19 июня 2019

Внутри вашей функции вы можете сначала рассчитать общий фильтр

def get_true(df, list_of_condition):
    # calculate overall filter here
    all_filters = list_of_condition[0]
    for cond in list_of_condition[1:]:
      all_filters &= cond

    # do your thing
    filter_df=np.diff(all_filters)
    df = df[np.insert(filter_df, 0, False)]
    return df
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...