Я пытаюсь выбрать строки из фреймворка pandas, применяя условие к столбцу (в форме логического выражения).Запуск логических выражений против pandas dataframe
кадр Образец данных выглядит следующим образом:
id userid code
0 645382311 12324234234
1 645382311 -2434234242
2 645382312 32536365654
3 645382312 12324234234
...
К примеру, я ожидаю следующий результат, применяя логические выражения для столбца 'код':
case 1: (12324234234 OR -2434234242) AND NOT 32536365654
case 2: (12324234234 AND -2434234242) OR NOT 32536365654
must give a result for both cases:
userid: 645382311
Логика выше говорит: Для случая 1 - дайте мне только те пользователи, которые имеют хотя бы одно из значений (12324234234 OR -2434234242) и не имеют 32536365654 в целом да ta рама. Для случая 2 - мне нужно только те, кто имеет идентификатор пользователя либо как коды в кадре данных (12324234234 И -2434234242) или любые коды, но не 32536365654.
Заявление, как показано ниже возвращает пустой DataFrame:
flt = df[(df.code == 12324234234) & (df.code == -2434234242)]
print("flt: ", flt)
Результат (и делает это):
flt: Empty DataFrame
Был бы признателен за любые намеки на обработку таких случаев.
Условия кажутся немного странными: для случая 1 «И НЕ 32536365654'' является избыточным; для случая 2, '' (12324234234 AND -2434234242) '' избыточно. –
Все в порядке. Для случая 1 мне нужен только тот пользователь, который имеет хотя бы одно из значений (12324234234 OR -2434234242) и не имеет 32536365654 во всем фрейме данных. Для случая 2 все в порядке, мне нужны только те пользователи, которые имеют оба кода в кадре данных или любых кодах, но не 32536365654. – Alex
Вы можете найти пользователей с кодом 32536365654, а затем использовать df [~ df.userid.isin()] метод для выбора пользователей, которые не имеют этого кода. См. Http://stackoverflow.com/questions/19960077/how-to-implement-in-and-not-in-for-pandas-dataframe –