gpt4 book ai didi

python - 键错误和 MultiIndex lexsort 深度

转载 作者:太空狗 更新时间:2023-10-29 21:43:09 25 4
gpt4 key购买 nike

我有一组制表符分隔的文件,我必须阅读它们,将它们用作 pandas 数据框,对它们进行一大堆操作,然后将它们合并回一个 excel 文件,代码太长了我将讨论其中有问题的部分

我正在解析的选项卡文件包含相同数量的行 2177

当我读取这些文件时,我按类型 (string, int) 的前 2 列进行索引

df = df.set_index(['id', 'coord'])
data = OrderedDict()
#data will contain all the information I am writing to excel
data[filename_id] = df

我正在执行的一个过程需要访问每一行数据[sample_id],其中包含混合类型的数据帧,索引为“id”和“coord”列,如下所示

sample_row = data[sample].ix[index]

我的索引是 ('id','coord')

如果我正在处理文件的一个子集,一切都很好,但是如果我读取了 2177 行的整个文件,我最终会收到此错误消息

KeyError: 'Key length (2) was greater than MultiIndex lexsort depth (0)'

我搜索了 SO 和所有地方,这似乎是排序索引的问题,但我不明白为什么使用未排序的子集不会导致问题

关于如何解决这个问题的任何想法?

谢谢

最佳答案

文档非常好。如果您使用多索引,则需要通读(多次!),请参阅 here

In [9]: df = DataFrame(np.arange(9).reshape(-1,1),columns=['value'],index=pd.MultiIndex.from_product([[1,2,3],['a','b','c']],names=['one','two']))

In [10]: df
Out[10]:
value
one two
1 a 0
b 1
c 2
2 a 3
b 4
c 5
3 a 6
b 7
c 8

In [11]: df.index.lexsort_depth
Out[11]: 2

In [12]: df.sortlevel(level=1)
Out[12]:
value
one two
1 a 0
2 a 3
3 a 6
1 b 1
2 b 4
3 b 7
1 c 2
2 c 5
3 c 8

In [13]: df.sortlevel(level=1).index.lexsort_depth
Out[13]: 0

In [9]: df = DataFrame(np.arange(9).reshape(-1,1),columns=['value'],index=pd.MultiIndex.from_product([[1,2,3],['a','b','c']],names=['one','two']))

In [10]: df
Out[10]:
value
one two
1 a 0
b 1
c 2
2 a 3
b 4
c 5
3 a 6
b 7
c 8

In [11]: df.index.lexsort_depth
Out[11]: 2

In [12]: df.sortlevel(level=1)
Out[12]:
value
one two
1 a 0
2 a 3
3 a 6
1 b 1
2 b 4
3 b 7
1 c 2
2 c 5
3 c 8

In [13]: df.sortlevel(level=1).index.lexsort_depth
Out[13]: 0

更新:

sortlevel 将被弃用,因此请使用 sort_index

df.sort_index(level=1)

关于python - 键错误和 MultiIndex lexsort 深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24922867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com