我有一个pandas数据帧,其中有一列连续变量。我需要将它们转换成3个bin,这样第一个bin包含值<;20%,第二个在20和80%之间,最后一个是大于80%。在
我试图通过首先得到这些百分位的垃圾箱边界,然后使用pandas-cut函数来实现它。问题是我得到了一个奇怪的结果,只得到中间的bin编码。请参见以下内容:
test = [x for x in range(0,100)]
a = pd.DataFrame(test)
np.percentile(a, [20, 80])
Out[52]: array([ 19.8, 79.2])
pd.cut(a[0], np.percentile(a[0], [20, 80]))
...
15 NaN
16 NaN
17 NaN
18 NaN
19 NaN
20 (19.8, 79.2]
21 (19.8, 79.2]
22 (19.8, 79.2]
...
78 (19.8, 79.2]
79 (19.8, 79.2]
80 NaN
为什么会这样?我认为熊猫切割需要你提供你想要的垃圾箱的边界。提供2个边界,我应该得到3个箱子,但似乎不这样做。在
如果你需要3个箱子,那么你需要4个休息时间。。在
另外,在熊猫中我们有
^{pr2}$qcut
,这意味着你不需要从numpy那里得到垃圾箱相关问题 更多 >
编程相关推荐