Python 为什么pandas groupby cut使用单记录输入提供不同形式的输出?
当我的输入序列只有一条记录时,pandas(v0.11或v0.12)groupby代码返回不同的输出结构时,我遇到了问题。我使用一组固定的存储箱,并根据下面类似的代码计算每个存储箱中出现的次数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() 对于任何长度的输入序列(
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修正,所以与我想的更简单的问题不同。