如何使用 pandas 制作不同大小的垃圾箱?

How to make bins of different sizes using pandas?

我有一个列表,想在 DataFrame 中创建一个列,其中包含使用 cutqcut 的分箱,但问题是我的分箱大小不均

l=[1, 11, 21, 31, 41, 51, 61, 71, 81, 91,101, 126, 151, 176, 201, 226, 251, 276, 301, 326, 351, 376, 401, 426, 451, 476, 501, 551, 601, 651, 701, 751, 801, 851, 901, 951, 1001, 1051, 1101, 1151,1201, 1251, 1301, 1351, 1401, 1451, 1501, 1551, 1601, 1651,1701, 1751, 1801, 1851, 1901, 1951, 2001, 2051, 2101, 2151]

我想要的输出如下

+-----------+
|   Range   |
+-----------+
| 1-10      |
| 11-20     |
| 21-30     |
| 31-40     |
| 41-50     |
| 51-60     |
| 61-70     |
| 71-80     |
| 81-90     |
| 91-100    |
| 101-125   |
| 126-150   |
| 151-175   |
| 176-200   |
| 201-225   |
| 226-250   |
| 251-275   |
| 276-300   |
| 301-325   |
| 326-350   |
| 351-375   |
| 376-400   |
| 401-425   |
| 426-450   |
| 451-475   |
| 476-500   |
| 501-550   |
| 551-600   |
| 601-650   |
| 651-700   |
| 701-750   |
| 751-800   |
| 801-850   |
| 851-900   |
| 901-950   |
| 951-1000  |
| 1001-1050 |
| 1051-1100 |
| 1101-1150 |
| 1151-1200 |
| 1201-1250 |
| 1251-1300 |
| 1301-1350 |
| 1351-1400 |
| 1401-1450 |
| 1451-1500 |
| 1501-1550 |
| 1551-1600 |
| 1601-1650 |
| 1651-1700 |
| 1701-1750 |
| 1751-1800 |
| 1801-1850 |
| 1851-1900 |
| 1901-1950 |
| 1951-2000 |
| 2001-2050 |
| 2051-2100 |
| 2101-2150 |
| 2151-2200 |
+-----------+

所以基本上,我想检查这些范围内是否存在数字,然后根据匹配获取更多列值的值。

假设您从以下数据开始:

df = pd.DataFrame(100*np.random.rand(100))

您可以通过以下方式直接获取垃圾箱:

df['bins'] = pd.cut(df[0], bins=l, include_lowest=True)

输出:

            0       bins
0   77.386478   (71, 81]
1   97.008834  (91, 101]
2   37.207325   (31, 41]
3   62.065115   (61, 71]
4   37.533101   (31, 41]
..        ...        ...
95  93.900669  (91, 101]
96   9.734420    (1, 11]
97  15.910740   (11, 21]
98  58.655497   (51, 61]
99  91.975037  (91, 101]