Как фильтровать строки на основе значений кортежа в pandas кадре данных - PullRequest
0 голосов
/ 18 июня 2020

Я использую mlxtend, чтобы найти правила ассоциации:

Вот код:

df = apriori(dum_data, min_support=0.5, use_colnames=True)
rules = association_rules(df, metric="lift", min_threshold=1)
rules2=rules[ (rules['lift'] >= 1) & (rules['confidence'] >= 0.8) ]

Вывод:

antecedents     consequents
( A,B,C)          (D)
(A)               (B)
(C,D,R)           (A) 
(C,D,F,G)         (E)
(A,E)             (B)

The type of values is `frozenset`

Я хочу оставить только те строки, в которых antecedents нет A или E, а consequent имеет A или E

Final output:

antecedents     consequents
(C,D,R)           (A) 
(C,D,F,G)         (E)

1 Ответ

1 голос
/ 23 июня 2020

Я думаю, это должно сделать именно это:

condition_1 = df['antecedents'].apply(lambda x: 'A' not in x and 'E' not in x)
condition_2 = df['consequents'].apply(lambda x: 'A' in x or 'E' in x)

df.loc[condition_1 & condition_2]

Надеюсь, это поможет!

...