Python 如何使用熊猫制作不同大小的垃圾箱?

Python 如何使用熊猫制作不同大小的垃圾箱?,python,pandas,bin,Python,Pandas,Bin,我有一个列表,想在数据框中创建一列,其中包含使用cut或qcut的箱子,但问题是我的箱子大小不尽相同 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,

我有一个列表,想在
数据框
中创建一列,其中包含使用
cut
qcut
的箱子,但问题是我的箱子大小不尽相同

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]

假设您从以下数据开始:

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]


我想你们可以传递一个右边值的列表来剪切或qcut。。。虽然
pd,但不完全确定。切割不需要
大小相等的
。在
参数中使用
bin=l
可以。如何确定最后的仓位大小?可以编写自定义_cut@anky,仓位大小只是在excel文件中给出的,试图使用给定的数据创建自己的仓位。我认为您可以传递一个要剪切或qcut的右侧值列表。。。虽然
pd,但不完全确定。切割不需要
大小相等的
。在
参数中使用
bin=l
可以。如何确定最后的仓位大小?可以编写自定义_cut@anky,bin大小只是在excel文件中给出的,试图使用给定的数据创建自己的文件这很好,但如果我希望它是动态的,比如下次列表可能会有所不同,这是什么意思?只要对
bin_data
l
的新值执行相同的操作,但是每次我都必须定义bin_data dictionary?我已经更新了我的答案,以便将基于
l
的bin应用于其他一些数据。如果您询问如何生成
l
,这是一个单独的问题。如果您重新格式化它。请粘贴df.to_dict()而不是降价等价物这很好,但如果我希望它是动态的,比如下次列表可能会有所不同,这是什么意思?只要对
bin_data
l
的新值执行相同的操作,但是每次我都必须定义bin_data dictionary?我已经更新了我的答案,以便将基于
l
的bin应用于其他一些数据。如果您询问如何生成
l
,这是一个单独的问题。如果您重新格式化它。请将df.to_dict()粘贴到,而不是等效的标记