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”使用自定义函数迭代所有范围,但是有没有办法更有效、更简洁地执行此分箱?
简单的列表理解能满足您的需求吗?
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)
| 归档时间: |
|
| 查看次数: |
2053 次 |
| 最近记录: |