错误连接multiindex pandas数据帧(分类)

时间:2016-10-23 19:18:58

标签: python pandas

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)

也有效。我已经经历了它破坏的边缘情况,而对于我的生活,我没有看到任何可能在这些行中冒犯的东西。有没有人对我应该寻找什么有一些想法?

2 个答案:

答案 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_indexset_index)来解决该问题。

不确定这是否对任何人都有帮助,但是在那里。如果有人可以尝试一个最小的可复制示例,那将是有帮助的(我没能做到)。