我有一个像这样的熊猫系列:
0 1787
1 4789
2 1350
3 1476
4 0
5 747
6 307
7 147
8 221
9 -88
10 9374
11 264
12 1109
13 502
14 360
15 194
16 4073
17 2317
18 -221
20 0
21 16
22 106
29 105
30 4189
31 171
32 42
我想创建 4 个 one 热编码变量,指示每行哪个值位于哪个四分位数,将系列分成 4 个四分位数。它会是这样的:
0 1787 Q1 Q2 Q3 Q4
1 4789 0 0 0 0
2 1350 0 0 0 1
3 1476 1 0 0 0
4 0 0 1 0 0
5 747 0 0 1 0
6 307 1 0 1 0
7 147 0 1 0 1
我知道数字并不完全匹配,这只是为了给出所需输出的直观示例。
我试过这个:
series.quantile[0.25, 0.5, 0.75, 1]
但这只能喊出这四个值:
0.25 67
0.50 442.5
0.75 1477.75
1.00 71188
我也试过这个:
series.apply(lambda x : series.quantile(x, 'lower'))
但是,这给出了以下错误:
ValueError: percentiles should all be in the interval [0, 1]. Try 17.87 instead.
实现我的目标的最佳方法是什么?
非常感谢您提前
炎炎设计
忽然笑
相关分类