【问题标题】:How to make bins of different sizes using pandas?如何使用熊猫制作不同大小的垃圾箱?
【发布时间】:2021-02-07 07:23:45
【问题描述】:

我有一个列表,想在 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 |
+-----------+

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

【问题讨论】:

  • 我认为您可以将右手值列表传递给 cut 或 qcut ...虽然不完全确定副手
  • pd.cut 不需要equal size。在parameter 中使用bin = l 就可以了。
  • 如何确定最后一个 bin 大小?
  • 你可以写一个custom_cut
  • @anky,bin 大小只是在一个 excel 文件中给出,试图使用给定的数据制作我自己的

标签: python pandas bin


【解决方案1】:

假设你从这个数据开始:

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]

【讨论】:

  • 这很好,但如果我希望它是动态的,比如下次列表可能会有所不同
  • 什么意思?只需对 bin_datal 的新值做同样的事情
  • 但是,我每次都要定义 bin_data 字典吗?
  • 我已经更新了我的答案,以便将基于 l 的垃圾箱应用于其他一些数据。如果你问如何生成l,那是一个单独的问题。
  • 如果你重新格式化它。请粘贴 df.to_dict() 而不是 markdown 等效项
猜你喜欢
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
  • 1970-01-01
相关资源
最近更新 更多