Как использовать .le () и .ge () при фильтрации столбцов кадра данных pandas?

Вот пример pandas DataFrame:

import pandas as pd import numpy as np data = {"first_column": ["item1", "item2", "item3", "item4", "item5", "item6", "item7"], "second_column": ["cat1", "cat1", "cat1", "cat2", "cat2", "cat2", "cat2"], "third_column": [5, 1, 8, 3, 731, 189, 9]} df = pd.DataFrame(data) df first_column second_column third_column 0 item1 cat1 5 1 item2 cat1 1 2 item3 cat1 8 3 item4 cat2 3 4 item5 cat2 731 5 item6 cat2 189 6 item7 cat2 9 

Я хотел бы «фильтровать» третий столбец на основе 10 = <x = <1000.

Если я делаю больше или равно 10, это:

 df['greater_than_ten'] = df.third_column.ge(10).astype(np.uint8) 

Если я делаю меньше 1000, это:

 df['less_than_1K'] = df.third_column.le(1000).astype(np.uint8) 

но я не могу выполнять эти операции одновременно, т. е.

 df['both'] = df.third_column.le(1000).ge(10).astype(np.uint8) 

Я также не мог попробовать эти операции последовательно.

Как я могу использовать .ge() и .le() вместе?

Вы можете использовать between() вместо для своей серии интересов.

 df['both'] = df.third_column.between(10, 1000).astype(np.uint8) 

Уступая

 >>> df first_column second_column third_column both 0 item1 cat1 5 0 1 item2 cat1 1 0 2 item3 cat1 8 0 3 item4 cat2 3 0 4 item5 cat2 731 1 5 item6 cat2 189 1 6 item7 cat2 9 0 
 In [11]: df['both'] = df.eval("10 <= third_column <= 1000").astype(np.uint8) In [12]: df Out[12]: first_column second_column third_column both 0 item1 cat1 5 0 1 item2 cat1 1 0 2 item3 cat1 8 0 3 item4 cat2 3 0 4 item5 cat2 731 1 5 item6 cat2 189 1 6 item7 cat2 9 0 

ОБНОВИТЬ:

 In [13]: df.eval("second_column in ['cat2'] and 10 <= third_column <= 1000").astype(np.uint8) Out[13]: 0 0 1 0 2 0 3 0 4 1 5 1 6 0 dtype: uint8 

Используйте & для соединения условий:

 In [28]: df['both'] = df['third_column'].ge(10) & df['third_column'].le(1000) df Out[28]: first_column second_column third_column both 0 item1 cat1 5 False 1 item2 cat1 1 False 2 item3 cat1 8 False 3 item4 cat2 3 False 4 item5 cat2 731 True 5 item6 cat2 189 True 6 item7 cat2 9 False