L是行上带有多索引的数据帧列表。
pd.concat(L,axis=1)
我收到以下错误(来自Categorical
中的categorical.py
构造函数):
TypeError:'values'未排序,请通过传入categories参数明确指定类别顺序。
它显然与我的数据框中的值有关,因为如果我以某种方式限制数据,我可以使它工作。
E.g。所有这些工作
a=pd.concat(L[0:6],axis=1)
b=pd.concat(L[6:11],axis=1)
c=pd.concat(L[3:9],axis=1)
但是
d=pd.concat(L[0:11],axis=1)
失败。
pd.concat([x.iloc[0:1000,:] for x in L[0:11]],axis=1)
也有效。我已经经历了它破坏的边缘情况,而对于我的生活,我没有看到任何可能在这些行中冒犯的东西。有没有人对我应该寻找什么有一些想法?
答案 0 :(得分:0)
我遇到了同样的错误:
TypeError:'values'未排序,请通过传入categories参数明确指定类别顺序。
然而,周围没有太多材料。看看错误日志在上面进一步说明了什么。我有:
TypeError:unorderable类型:range()<范围()
在处理上述异常期间,发生了另一个异常:
线索是'range()< range()'因为我有一个先前的问题here,Pandas解释'(1,2)'或'(30,31)'不是字符串而是'range(1,3)'或'range(分别为30,32)。非常烦人,因为dtypes仍然是对象。
我必须将列内容更改为列表和/或删除'range(x,y)'列。
希望这有助于或任何遇到此问题的人。干杯!
答案 1 :(得分:0)
当我使用自定义应用功能执行df.groupby(...).apply(...)
时,我也遇到了这个问题。在groupby-apply之后将结果合并回一起时似乎出现了错误(因此,我必须在自定义的apply函数中返回了它不喜欢的东西)。
检查pytest提供的广泛堆栈跟踪后,我发现索引值中出现了一个神秘的第三个值:
values = Index([(2018-09-01 00:00:00, 'SE0011527613'),
(2018-09-25 00:00:00, 'SE0011527613'),
1535760000000000000], dtype='object')
我完全不知道它的出现方式,但是我设法通过在代码的特定部分中避免使用多索引的东西(广泛使用reset_index
和set_index
)来解决该问题。
不确定这是否对任何人都有帮助,但是在那里。如果有人可以尝试一个最小的可复制示例,那将是有帮助的(我没能做到)。