Return某个值的bin经过CUT或者value_counts()拆分成Pandas个bin后

Return the bin of a certain value after splitting into Pandas bins after CUT or value_counts()

假设我使用 df.value_counts(bins=10) 拆分我的框架 这是它的样子

Values_mean
(53.649, 90.21]                  5127
(35.369, 53.649]                 4285
(90.21, 108.49]                  3559
(108.49, 126.77]                 2579
(866.77, 935.05]                 1526
(199.891, 218.171]               1304
(218.171, 251.451]                506
(-1.46699, 17.089]                478
(251.451, 284.732]                 30
(284.732, 343.012]                  7
Name: Values_mean, dtype: int64

现在我想找出值在哪里:newVal=38.54 将适合数据的哪个百分位数。

示例:这些值的 CUMSUM = 19401 newVal=38.54 将属于 Bin :

(35.369, 53.649]                 4285

所以它表示 4285/19401 它属于 0.2208 的数据。

提前致谢

您想对索引进行排序,然后使用 right 属性获取间隔的右侧。然后使用 searchsorted 找到适合搜索值的位置。使用该信息计算出计数值。

def ptile(x, s):
    total = s.sum()
    s = s.sort_index()
    i = s.index.right.searchsorted(x)
    return s.iloc[i] / total

ptile(38.54, s)

0.2208649038709345