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))