Фрейм данных фильтрует столбец, если он находится в интервале данных - PullRequest
2 голосов
/ 24 апреля 2019

У меня есть массив dataframe, который включает в себя некоторый столбец, и один из них - «время» я хочу отфильтровать строки, время которых находится в определенном интервале

Чтобы упростить задачу, я создаю кадр данных с целочисленным значением и целочисленным интервалом

data=pd.DataFrame({'A':[1,2,3,4,5,6,7,8,9]})
interval=pd.Interval(1,4)
data[data['A'] in interval]

Показывает: ValueError: Значение истинности Серии неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

но ожидаемый результат - [2,3,4]

Ответы [ 3 ]

2 голосов
/ 24 апреля 2019

Использование вашего interval

data.loc[(data.A>=interval.left) & (data.A<interval.right)]
Out[245]: 
   A
0  1
1  2
2  3
3  4
2 голосов
/ 24 апреля 2019

between

pandas.Series.between вернет логическую маску, которую можно использовать для фильтрации кадра данных.

data[data.A.between(1, 4)]

   A
0  1
1  2
2  3
3  4

query

pandas.DataFrame.query также может использоваться для фильтрации

data.query('1 <= A <= 4')

   A
0  1
1  2
2  3
3  4

isin

pandas.Series.isin можно использовать в специальном целочисленном случае, используя range. Аналогично between мы создаем логическую маску.

data[data.A.isin(range(1, 5))]

   A
0  1
1  2
2  3
3  4
1 голос
/ 24 апреля 2019

Использование Series.between:

s = data[data.A.between(interval.left+1, interval.right)]

print(s)
   A
1  2
2  3
3  4

Или используя Boolean indexing:

l = data[(data.A > interval.left) & (data.A <= interval.right)]

print(l)
   A
1  2
2  3
3  4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...