首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理pd.cut直接返回的“间隔”类型值?

如何处理pd.cut直接返回的“间隔”类型值?
EN

Stack Overflow用户
提问于 2022-08-12 07:04:39
回答 1查看 67关注 0票数 1

我使用“pd.cut”将数组元素分离到不同的回收箱中,并使用“value_counts”来计数每个桶的频率。我的代码和结果都是这样的。

代码语言:javascript
复制
s = pd.Series([5,9,2,4,5,6,7,9,5,3,8,7,4,6,8])
pd.cut(s,5).value_counts()
>>> pd.cut(s,5).value_counts()
(4.8, 6.2]      5
(7.6, 9.0]      4
(1.993, 3.4]    2
(3.4, 4.8]      2
(6.2, 7.6]      2

我想得到结果的索引部分的前三行的值,即:

代码语言:javascript
复制
[4.8, 6.2]
[7.6, 9.0]  
[1.993, 3.4]

或更好:

代码语言:javascript
复制
[4.8, 6.2, 7.6, 9.0, 1.993, 3.4] 

但我搜索了一些信息,发现熊猫似乎没有直接处理这个间隔数据的方法,所以我不得不使用以下愚蠢的方法,然后将它们组合成列表或数组:

代码语言:javascript
复制
v1 = pd.cut(s,5).value_counts().index[0].left
v2 = pd.cut(s,5).value_counts().index[0].right
v3 = pd.cut(s,5).value_counts().index[1].left
...
v6 = pd.cut(s,5).value_counts().index[2].right

那么,是否有更容易的方法来实现我的需要呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-12 07:10:44

CategoricalIndex转换为IntervalIndex,因此可以使用IntervalIndex.leftIntervalIndex.right

代码语言:javascript
复制
s = pd.cut(s,5).value_counts()
i = pd.IntervalIndex(s.index)

L1 = list(zip(i.left, i.right))[:3]
print (L1)
[(4.8, 6.2), (7.6, 9.0), (1.993, 3.4)]

L2 = [y for x in L1 for y in x]
print (L2)
[4.8, 6.2, 7.6, 9.0, 1.993, 3.4]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73330398

复制
相关文章

相似问题

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