Python 在Pandas中使用原始数据帧进行装箱

Python 在Pandas中使用原始数据帧进行装箱,python,pandas,Python,Pandas,我有以下数据帧: % Beat EPS % Beat Rev % Since 0 0.080 -0.0429 0.280 1 0.000 0.0304 0.012 2 6.667 0.0054 0.388 3 -0.176 0.3277 0.010 4 -0.070 -0.0621 0.059 5 0.18

我有以下数据帧:

     % Beat EPS  % Beat Rev  % Since
0         0.080     -0.0429     0.280
1         0.000      0.0304     0.012
2         6.667      0.0054     0.388
3        -0.176      0.3277     0.010
4        -0.070     -0.0621     0.059
5         0.182      0.1039     0.234
6         0.625      0.0338    -0.042
7         0.000     -0.0507     0.000
8         0.042      0.0223     0.028
9         0.357     -0.0486    -0.020
它还在继续。我希望能够独立地对所有列进行装箱。例如,如果我们想使用5个存储箱,那么列1、2和3将仅为int 1-5,分别基于每个列的Min和Max

我可能只需要使用一些for循环就可以解决这个问题,但我希望通过选择或索引数据,然后设置。我只是在设置链接索引和设置iloc/loc/ix时遇到了麻烦


我想做df[df['%Beat-EPS']我想这会做你想做的事情:

>>> n = 5  # nbins
>>> np.round(x.rank(pct=True)*(n-1))

它根据项目在每列中的百分比从0.0到1.0对项目进行排序,然后将其从0缩放到比箱子数量少1的位置,然后进行轮换。

换句话说,您希望将每列从[min,max]范围缩放到[0,bins]范围。以及[0,bins]中的所有数字比例是整数?我添加了可能有用的输出。该示例生成三个箱子,每个箱子代表给定列的一个百分位组。您可能需要重新检查输出和后续行,它完全不匹配,仍然不清楚您试图在这里建立什么。
     % Beat EPS  % Beat Rev  % Since
0             1           0        2
1             1           2        1
2             2           1        2
3             0           2        1
4             0           0        2
5             2           2        2
6             2           2        0
7             1           0        1
8             1           1        1
9             2           0        1
>>> n = 5  # nbins
>>> np.round(x.rank(pct=True)*(n-1))