Python 为什么pandas groupby cut使用单记录输入提供不同形式的输出?

Python 为什么pandas groupby cut使用单记录输入提供不同形式的输出?,python,pandas,Python,Pandas,当我的输入序列只有一条记录时,pandas(v0.11或v0.12)groupby代码返回不同的输出结构时,我遇到了问题。我使用一组固定的存储箱,并根据下面类似的代码计算每个存储箱中出现的次数 s0 = pd.Series([1,2,1,3,1,4,1,2,1], name='foo') s = s0 #s = s0[:0] #s = s0[:1] #s = s0[:2] bins = pd.cut(s,[0,2,4]) s.groupby(bins).count() 对于任何长度的输入序列(

当我的输入序列只有一条记录时,pandas(v0.11或v0.12)groupby代码返回不同的输出结构时,我遇到了问题。我使用一组固定的存储箱,并根据下面类似的代码计算每个存储箱中出现的次数

s0 = pd.Series([1,2,1,3,1,4,1,2,1], name='foo')
s = s0
#s = s0[:0]
#s = s0[:1]
#s = s0[:2]
bins = pd.cut(s,[0,2,4])
s.groupby(bins).count()
对于任何长度的输入序列(1除外),我都会得到一个输出序列,其中每个存储单元有一条记录,并且该存储单元有一个计数,即使它是零。大概是这样的:

foo
(0, 2]    7
(2, 4]    2
dtype: int64
((0, 2])    1
dtype: int64
但如果输入序列的长度为1,则得到的输出具有不同的结构,如下所示:

foo
(0, 2]    7
(2, 4]    2
dtype: int64
((0, 2])    1
dtype: int64
我想知道这是否与我经常遇到的问题有关,在这个问题中,一个数据帧的一个记录片段变成了一个表示行值的序列,而不是一个记录数据帧。(您可以避免使用df.ix[n:n]而不是df.ix[n]。)


但是我不知道如何在这里轻松解决这个问题。

一个完整的方法是检查
len(s)==1
并传入
pd.concat([s,s])
,然后将结果除以2。我想我已经找到了这个问题的一个更简单的形式——参见不被0.12修正,所以与我想的更简单的问题不同。