Фильтрация в отличие от столбцов в Pandas Dataframe - PullRequest
1 голос
/ 11 октября 2019

У меня есть фрейм данных "Query1".

Я хочу отфильтровать этот фрейм данных в фрейм данных, содержащий только строки, у которых есть два столбца, которые не равны друг другу. Типы данных в обоих столбцах являются строками (большинство строк числовые).

При выполнении следующих операций «Test» возвращает серию логических значений для каждой строки (как и ожидалось), указывая true/ false для совпадения.

Test = Query1['Sponsor ID'] != Query1['Sponsor Number']  
Test = Query1['Sponsor ID'] != ['Sponsor Number']

Похоже, отсюда я смогу выполнить что-то вроде этого для фильтрации при условии:

Output = Query1[Query1['Sponsor ID'] != Query1['Sponsor Number']]
Output = Query1[[Query1['Sponsor ID'] != Query1['Sponsor Number']]==True]
Output = Query1[Query1['Sponsor ID'] != Query1['Sponsor Number']==True]
Output = Query1.loc[Query1['Sponsor ID'] != Query1['Sponsor Number']]

Однако эти четыре теста не пройденыи либо выдает ошибку, либо возвращает все строки без фильтрации или даже без учета логического значения.

Я попытался протестировать логическое значение само по себе, чтобы убедиться, что оно возвращает одиннадцать значений, которые я ожидаю в кадре данных, однако выглядиткак будто у меня что-то не так в моем синтаксисе. Насколько мне известно, «правильный» синтаксис должен выглядеть примерно так, как указано в df1 ['col1'] == value. Попытка выполнить следующее показывает мое логическое значение «Истина» или «Ложь» в каждом ряду.

print(Test[1:]==False)
print(Test[1:1]==True)
print(Test.loc[1:]==False)

1 Ответ

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

Попробуйте следующим образом:

Query1.loc[~(Query1['Sponsor ID'] == Query1['Sponsor Number'])]

~ работает как дополнительный (например, not)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...