以下是获得观点的示例:
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 :(得分:0)
我不确定groupby是否适用于Intervals
,但它肯定适用于类别。您可以使用pd.Categorical
然后使用groupby。
data.groupby(pd.Categorical(data.a)).count()
a
(-inf, 1] 1
-999.0 1
(1, inf] 1