我使用“pd.cut”将数组元素分离到不同的回收箱中,并使用“value_counts”来计数每个桶的频率。我的代码和结果都是这样的。
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我想得到结果的索引部分的前三行的值,即:
[4.8, 6.2]
[7.6, 9.0]
[1.993, 3.4]或更好:
[4.8, 6.2, 7.6, 9.0, 1.993, 3.4] 但我搜索了一些信息,发现熊猫似乎没有直接处理这个间隔数据的方法,所以我不得不使用以下愚蠢的方法,然后将它们组合成列表或数组:
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那么,是否有更容易的方法来实现我的需要呢?
发布于 2022-08-12 07:10:44
将CategoricalIndex转换为IntervalIndex,因此可以使用IntervalIndex.left、IntervalIndex.right
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]https://stackoverflow.com/questions/73330398
复制相似问题