我有一个pd.系列的浮动,我想把它放入n个箱子中,每个箱子的箱子大小都被设置为max/min是一个预设值(例如1.20)?
这一要求意味着垃圾箱的尺寸不是恒定的。例如:

data = pd.Series(np.arange(1, 11.0))
print(data)

0     1.0
1     2.0
2     3.0
3     4.0
4     5.0
5     6.0
6     7.0
7     8.0
8     9.0
9    10.0
dtype: float64

我希望箱子的尺寸为:
1.00 <= bin 1 < 1.20
1.20 <= bin 2 < 1.20 x 1.20 = 1.44
1.44 <= bin 3 < 1.44 x 1.20 = 1.73
...


谢谢

最佳答案

这里有一个pd.cut,其中的bins可以通过使用np.cumprod填充的数组的1.2来计算:

data = pd.Series(list(range(11)))
import numpy as np

n = 20 # set accordingly
bins= np.r_[0,np.cumprod(np.full(n, 1.2))]
# array([ 0.        ,  1.2       ,  1.44      ,  1.728 ...
pd.cut(data, bins)

0                 NaN
1          (0.0, 1.2]
2      (1.728, 2.074]
3      (2.986, 3.583]
4        (3.583, 4.3]
5         (4.3, 5.16]
6       (5.16, 6.192]
7       (6.192, 7.43]
8       (7.43, 8.916]
9     (8.916, 10.699]
10    (8.916, 10.699]
dtype: category

在这种情况下,垃圾箱上升到:
np.r_[0,np.cumprod(np.full(20, 1.2))]

array([ 0.        ,  1.2       ,  1.44      ,  1.728     ,  2.0736    ,
        2.48832   ,  2.985984  ,  3.5831808 ,  4.29981696,  5.15978035,
        6.19173642,  7.43008371,  8.91610045, 10.69932054, 12.83918465,
       15.40702157, 18.48842589, 22.18611107, 26.62333328, 31.94799994,
       38.33759992])

所以必须根据实际数据的值范围来设置

关于python - 如何对 Pandas 系列进行装箱,将每个箱的箱尺寸设置为最大值/最小值的预设值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58270531/

10-12 19:52