如何使用 Pandas 有效地将值放入重叠的容器中?

Ser*_*rov 5 python binning pandas

我想将 float 类型的列中的所有值放入重叠的容器中。生成的列可能是一系列带有布尔值的一维向量 - 一个向量对应原始列中的每个值。生成的向量包含True每个 bin 的值以及False其他 bin 的值。

例如,如果我有四个 bin [(0, 10), (7, 20), (15, 30), (30, 60)],并且原始值为 9.5,则结果向量应该为[True, True, False, False]

我知道如何使用“apply”使用自定义函数迭代所有范围,但是有没有办法更有效、更简洁地执行此分箱?

DrT*_*TRD 4

简单的列表理解能满足您的需求吗?

Bins = [(0, 10), (7, 20), (15, 30), (30, 60)]
Result = [((9.5>=y[0])&(9.5<=y[1])) for y in Bins]
Run Code Online (Sandbox Code Playgroud)

如果您的数据存储在datapandas DataFrame ( df) 的列中,那么您可以定义该函数:

def in_ranges(x,bins):
    return [((x>=y[0])&(x<=y[1])) for y in bins]
Run Code Online (Sandbox Code Playgroud)

并将其应用到列:

df[data].apply(lambda x: pd.Series(in_ranges(x,Bins),Bins))
Run Code Online (Sandbox Code Playgroud)