Я ищу эквивалент pd.cut, но для скаляра?
Я хотел бы сделать это:
bins = [0, 5, 10, 15, 20, 25, 30, 40, 50, 100, 150]
pd.cut(43, bins=bins)
Но в настоящее время это вызывает ошибку значения:
ValueError: Input array must be 1 dimensional
Это можно исправить, добавив []
:
pd.cut([43], bins=bins)
Что выводит:
[(40, 50]]
Categories (10, interval[int64]): [(0, 5] < (5, 10] < (10, 15] < (15, 20] ... (30, 40] < (40, 50] < (50, 100] < (100, 150]]
Но просто интересно, есть ли лучший способ перейти от скаляра к интервалу в Python вообще или с Pandas?
Если вы просто хотите получить связанный объект Interval
, вы можете создать IntervalIndex
и отфильтровать с помощью get_loc
:
In [2]: bins = [0, 5, 10, 15, 20, 25, 30, 40, 50, 100, 150]
In [3]: ii = pd.IntervalIndex.from_breaks(bins)
In [4]: ii[ii.get_loc(43)]
Out[4]: Interval(40, 50, closed='right')
В документ pandas.cut указано, что
x
должно быть массивным и одномерным, так что я думаю, что нет.pandas.cut
не может экстраполировать измерение из одного целого числа или числа с плавающей запятой. Вам нужно обернуть его в список, как вы делаете.