Как выполнить булеву фильтрацию с двумя строками в качестве условий в pandas - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь использовать булевую фильтрацию для создания нового кадра данных в pandas, где записи в столбце 'job_id' соответствуют значениям в серии 'x'.

Это то, что я пробовал, хотя | оператор не работает со строками, поэтому я не уверен, что делать.

x = jobs[jobs['job_title'].isin(['Sales Representative', 'Sales Manager'])]['job_id']
employees['job_id'][(x[7]) | (x[8])]

screenshot

1 Ответ

1 голос
/ 15 января 2020

Трудно ответить без воспроизводимого примера для работы, но я думаю, что проблема заключается в том, чтобы просто изменить его на:

employees['job_id'][ (employees['job_id'] == x[7]) | (employees['job_id'] == x[8]) ]

Ваш код не содержит никакого логического теста. Это работает для меня, по крайней мере, на примере ниже, который показывает, что | может определенно использоваться со строками:

df = pd.DataFrame({'num_legs': [2, 4, 8, 0],'letter': ['a', 'b', 'c', 'd'], 'num_specimen_seen': [10, 2, 1, 8]},index=['falcon', 'dog', 'spider', 'fish'])
df['num_specimen_seen'][(df['letter'] == 'a') | (df['letter'] == 'b')]
df['letter'][(df['letter'] == 'a') | (df['letter'] == 'b')]
...