pandas 如何添加按 运行 范围分组的列

pandas how to add column of group by running range

我有一个数据框:

A      B 
0     0.1
0.1   0.3
0.35  0.48
1.3   1.5
1.5   1.9
2.2   2.9
3.1   3.4
5.1   5.5

而且我想添加一个列,在分组到 1.5 的 bin 后,它将成为 B 的排名,所以它将是

A      B     T
0     0.1    0
0.1   0.3    0
0.35  0.48   0
1.3   1.5    0
1.5   1.9    1
2.2   2.9    1
3.1   3.4    2
5.1   5.5    3

最好的方法是什么?

使用cut with Series.factorize:

df['T'] = pd.factorize(pd.cut(df.B, bins=np.arange(0, df.B.max() + 1.5, 1.5)))[0]
print (df)
      A     B  T
0  0.00  0.10  0
1  0.10  0.30  0
2  0.35  0.48  0
3  1.30  1.50  0
4  1.50  1.90  1
5  2.20  2.90  1
6  3.10  3.40  2
7  5.10  5.50  3