将下一条记录提取到 Pandas 列中的百分位值
Fetch the Next Record to the percentile value in a Pandas Column
我有以下数据帧
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
我需要为每组 ['Year'、'Sector'、'Number'] 和下一组 return 计算 'Count' 的第 90 个百分位值组中最接近的最高记录。
例如:
In the group
2015 CC 172 272
2015 CC 172 234
2015 CC 173 234
2015 CC 173 345
90th 百分位值为 323.1,使用 np.percentile() 函数。我想要 return 值 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 - return 具有最小 ID 的行:
df.loc[ids]
我有以下数据帧
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
我需要为每组 ['Year'、'Sector'、'Number'] 和下一组 return 计算 'Count' 的第 90 个百分位值组中最接近的最高记录。
例如:
In the group
2015 CC 172 272
2015 CC 172 234
2015 CC 173 234
2015 CC 173 345
90th 百分位值为 323.1,使用 np.percentile() 函数。我想要 return 值 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 - return 具有最小 ID 的行:
df.loc[ids]