Создание второго кадра данных с учетом 2 условий из первого кадра данных - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть основной DataFrame, и я нашел несколько строк, которые мне не нужны.Я нашел эти условия в приведенном ниже коде:

df.query("group == 'treatment' and landing_page != 'new_page'") 
df.query("landing_page == 'new_page' and group != 'treatment'")

Теперь я хочу df2, учитывая все df ИСКЛЮЧИТЬ те строки, которые приведены в коде выше.Я получаю трудное время, пытаясь создать это df2.Любые огни?

Мой фактический код:

df2 = df.query("group == 'treatment' and landing_page == 'new_page'") and df.query("group == 'control' and landing_page == 'old_page'")

Я получаю эту ошибку: ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

1 Ответ

0 голосов
/ 05 декабря 2018

Измените query на eval и инвертируйте маску при индексировании df.

m1 = df.eval("group == 'treatment' and landing_page != 'new_page'") 
m2 = df.eval("landing_page == 'new_page' and group != 'treatment'")

df_out = df[~(m1 | m2)]

Или, немного более обобщенно,

stmts = [
    "group == 'treatment' and landing_page != 'new_page'",
    "landing_page == 'new_page' and group != 'treatment'"
]

df_out = df[~np.logical_or.reduce([df.eval(stmt) for stmt in stmts])]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...