Pandas 如何在没有qcut的情况下将一个数字系列分成大小大致相同的n组?

Pandas 如何在没有qcut的情况下将一个数字系列分成大小大致相同的n组?,pandas,dataframe,series,bins,Pandas,Dataframe,Series,Bins,我想将我的序列精确地分成n个组(假设序列中至少有n个不同的值),其中组大小大致相等 代码需要是通用的,因此我无法提前知道数据的分布,因此使用带有预定义存储箱的pd.cut不是我的选择 我试着将pd.qcut或pd.cut与pd.Series.quantile一起使用,但当序列中经常重复某个值时,它们都会出现不足 例如,如果我只想要3组: series = pd.Series([1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 4]) pd.qcut(series, q

我想将我的序列精确地分成n个组(假设序列中至少有n个不同的值),其中组大小大致相等

代码需要是通用的,因此我无法提前知道数据的分布,因此使用带有预定义存储箱的
pd.cut
不是我的选择

我试着将
pd.qcut
pd.cut
pd.Series.quantile
一起使用,但当序列中经常重复某个值时,它们都会出现不足

例如,如果我只想要3组:

series = pd.Series([1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 4])
pd.qcut(series, q=3, duplicates="drop")
只创建两个类别:
categories(2,interval[float64]):[(0.999,3.0]<(3.0,4.0]]
,而我希望得到类似于
[(0.999,1.0]<(1.0,3.0]<(3.0,4.0]


熊猫的内置方法有什么方法可以轻松做到这一点吗?

按你的时间间隔
[(0.999,1.0]<(1.0,3.0]<(3.0,4.0)]
将导致组大小为8、2和4。大小不是“大致相等”@CodeDifferent鉴于我在这种情况下只需要3组,即使大小完全不同,按您的时间间隔
[(0.999,1.0]<(1.0,3.0]<(3.0,4.0)]
将是可能的最佳分割(没有其他3组分割)。大小不会“大致相等”@CodeDifferent在这种情况下,我只需要3组,即使大小完全不同,这将是可能的最佳分割(没有其他3组分割)