首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python pandas.cut()

Python pandas.cut()
EN

Stack Overflow用户
提问于 2022-05-27 20:09:20
回答 1查看 208关注 0票数 0

我有以下数组:

代码语言:javascript
复制
array.unique()
array(['10','8', '15','20','21','22 '27','28' nan, '30', '32', '33', 'Values']

我正在尝试分配以下类别标签,并将它们放在相应的bin中:'not_number','10及以下‘,'11'- '32','33’及以上,使用pd.cut(),结果应该是:

代码语言:javascript
复制
'not_number'        2   <= this includes ('Values', nan) 
'10 and below'      2 
'11'- '32'          9 
'33 and up'         1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-27 21:09:35

如果传递非int数组数据类型,则剪切方法将引发TypeError。我建议的解决方案是将数组传递给列表以管理不同的数据类型。在这种情况下,可以使用列表理解将nan'Values'替换为负数。有了这个集合,您就可以在列表上使用pd.cut方法并对数据进行标记。

代码语言:javascript
复制
a = np.array(['10','8', '15', '20','21','22', '27', '28', 'nan', '30', '32', '33', 'Value'])
a_list = [int(i) if i.isdigit() else -1 for i in c]
bins = pd.IntervalIndex.from_tuples([(-np.Inf, 0), (0, 10), (10, 32), (32, np.Inf)])
lab = ['Not a Value', '10 and below', '11 - 32', '33 and above']
a_cut = pd.cut(s, bins)
a_cut.categories = lab
print(a.value_counts())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72410579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档