将下一个记录获取到熊猫列中的百分位数



我有以下数据框架

Year    Sector  Number   Count
2015    AA      173      277
2015    AA      172      278
2015    AA      173      234
2015    BB      173      234
2015    BB      171      273
2015    BB      173      272
2015    CC      172      272
2015    CC      172      234
2015    CC      173      234
2015    CC      173      345
2016    AA      173      277
2016    AA      173      277
2016    BB      173      277
2016    BB      173      277
2016    CC      173      277
2016    CC      173      272
2016    CC      170      273
2016    CC      170      275

我需要计算["'',''','sector','number'的每组的"计数"的第90个百分位数,并返回该组中下一个最接近的记录。

例如:

In the group 
2015    CC      172      272
2015    CC      172      234
2015    CC      173      234
2015    CC      173      345

使用np.percentile((函数的第90个百分位数为323.1。我想返回345的值,这是小组中下一个最高的值。这里有任何帮助吗?

您可以作为5个步骤过程实现:

  • 的组
  • 找到90%百分位数
  • 找到上述所有值
  • 保持最小的ID
  • 检索所有必要的ID

假设您的数据框架名为 df

ids = [data[data.Count>=np.percentile(data.Count,90)].Count.idxmin()
       for group,data in df.groupby('Sector')]
df.loc[ids]

我将其分解为步骤:

1-按部门迭代组:

for group,data in df.groupby('Sector')

2-找到百分位数:

perc = np.percentile(data.Count,90)

3-过滤值:

subdf = data[data.Count>=np.percentile(data.Count,90)]

4-找到最小值的ID:

subdf.Count.idmin()

5-以最小ID返回行:

df.loc[ids]

最新更新