2017-09-14 10 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 
関連する問題