2017-09-14 83 views
0

系列下面是一个例子,以获得一点:熊猫groupy与间隔

missing_values=-999.0  
level1=pd._libs.interval.Interval(-np.inf, 1, closed='right') 
level2=pd._libs.interval.Interval(1,np.inf, closed='right') 
data=pd.DataFrame({'a':[level1,missing_values,level2]}) 

>>> data 
      a 
0 (-inf, 1] 
1  -999 
2 (1, inf] 

,当我尝试data.groupby(['a']).count(),它会错TypeError: unorderable types: Interval() > float()

但如果我设置-999在第一线,或设置3个间隔级别,它可以运行!

>>> data 
      a 
0  -999 
1 (-inf, 1] 
2 (1, inf] 

>>> data.groupby(['a']).count() 
a 
-999.0  1 
(-inf, 1] 1 
(1, inf]  1 


>>> data 
    a 
0 (-inf, 1] 
1  -999 
2  (1, 2] 
3 (2, inf] 

>>> data.groupby(['a']).count() 
a 
(-inf, 1] 1 
-999.0  1 
(1, 2]  1 
(2, inf]  1 
Name: a, dtype: int64 

这意味着groupby可以排序间隔和浮动? TypeError是什么意思?

回答

0

我不确定groupby与Intervals合作,但它绝对适用于类别。您可以使用pd.Categorical,然后groupby。

data.groupby(pd.Categorical(data.a)).count() 

      a 
(-inf, 1] 1 
-999.0  1 
(1, inf] 1