有没有办法pd.cut一个标量



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

最新更新