我有一个大熊猫系列(作为更大数据框的一部分),如下所示:
0 7416
1 10630
2 7086
3 2091
4 3995
5 1304
6 519
7 1262
8 3676
9 2371
10 5346
11 912
12 3653
13 1093
14 2986
15 2951
16 11859
我想根据以下分位数对行进行分组:
Top 0-5%
Top 6-10%
Top 11-25%
Top 26-50%
Top 51-75%
Top 76-100%
首先我开始在数据上使用pd.rank()
,然后我计划然后使用pd.cut()
将数据剪切成垃圾箱,但它似乎不接受前N%,而是接受显式bin边缘。有没有一种简单的方法在pandas中执行此操作,或者我是否需要创建一个lambda / apply函数来计算每个排序项应放在哪个bin中。
答案 0 :(得分:9)
这是你的想法吗?
select a.*, b.start_date, b.end_date, c.value_text
from
val_tb a
left join
record_tb b on a.record_id = b.record_id
答案 1 :(得分:0)
略有修改版本:
pd.qcut(data,[0,0.05,0.1,0.25,0.5,0.75,1])
否则,如果数据集低于0.05(5%),它会给我NaN。