我正在寻找相当于 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')