python怎么打开层次化索引

python怎么打开层次化索引,第1张

层次化索引是你能在一个数组上拥有多个索引,例如:

有点像Excel里的合并单元格对么?

以外层索引的方式选择数据子集:

以内层索引的方式选择数据:

层次化索引在数据重塑和分组中扮演着很重要的角色,例如,上面的层次化索引数据可以转换为一个DataFrame:

对于一个DataFrame,横轴和竖轴都可以有层次化索引,例如:

重排分级顺序

swaplevel()函数可以将两个级别的数据进行交换,例如:

sortlevel()函数根据单个级别的值对数据进行排序,例如:

以行按第一层进行排序:

以行按第二层进行排序:

以列按第一层进行排序:

s = raw_input()

lines = ssplit('\n')

dictlines = lines[:100]

mydict = {}

# read 

for i,line in enumerate(dictlines ):

    for word in linesplit():

      mydictsetdefault(word,[])append(i + 1)

# print indices

for word in mydictkeys():

    print "%s: %s"  % (word,", "join(map(str,sorted(mydict[word]))))

 

def andSearch(words_list):

    global mydict

    a = set(range(1,101))

    for word in words_list:

        a = aintersection(set(mydict[word])) 

     return a 

def orSearch(words_list):

    global mydict

    a = set([])

    for word in words_list:

        a = aunion(set(mydict[word]))

    return a 

    

# Query

index = 100

u = lines[index]

while index < len(lines):

    words_list = usplit()

    if ":" in u:

        if words_list[0] == "OR:":

            a = orSearch(words_list)

        else:

            if words_list[0] == 'AND:':

               words_list = words_list[1:]

            a = andSearch(words_list)

    if not a:

        print ", "join(map(str,list(a)))

    else:

        print "None"

    index += 1

大致思想就是这样。。。。。。。。

numpy中有函数argsort来返回排序后的下标

结果

pytorch中的torchsort本身就能返回排序后的下标

Python中没有直接调用的接口,怎么办呢?

用enumerate再排序就可以了

结果

用oswalk(path)遍历文件夹A得到A文件夹下所有的文件以及目录,根据获取到的所有的文件名,通过if name in file_name 来过滤出你要的文件

import os

for root, path, names in oswalk(r'D:\test'):

print(root, path, names)

for name in names:

if 'a' in name:

print('---------')

print(name)

print('---------')

a = {'一': ["A", "B", "C"], '二': ["D", "E", "F"]}

b = list(avalues())

print(b[1]) # ['D', 'E', 'F']

只有通过遍历得到。 这个应该没有直接获取的方式方法。 遍历这个数组,当然维数不确定的话你就需要使用递归,然后一一判断它的值是否为你指定的值,然后输出索引。 另外,建议不要匿名提问,因为这会让很多高手不屑于回答你的问题。

从语法上将 MultiIndex 与 loc 集成在高级索引中是有些挑战性。通常, MultiIndex 的键采用元组的形式。例如

注意 : 虽然也可以使用 dfloc['bar', 'two'] ,但这种简写的符号通常会导致歧义

如果你还想用 loc 索引某一列,你必须像这样使用一个元组

想要获取第一个级别的某一标签的所有元素,并不需要传递元组,例如

而不是使用 dfloc[('bar',),] (等价于 dfloc['bar',] )

当然,也可以进行切片

通过提供一个元组切片,选择范围内的值

传递一个标签或元组列表的工作原理类似于 reindex

需要注意的是,在 pandas 中,当涉及到索引时,元组和列表的处理方式并不相同。

元组被解释为一个多级键,而列表则用来指定多个键。或者换句话说,元组是横向的,列表是纵向的

您可以通过提供多个索引器来对 MultiIndex 进行切片

可以使用 slice(None) 选择该级别的所有内容,没有指定索引的级别默认为 slice(None)

通常,切片的两段都会包括在内,因为这是标签索引

在使用 loc 的时候,最好同时指定索引(行)和标签(列),因为在某些情况下,传递的索引可能会被解析为两个轴而不是 MultiIndex

你应该使用

而不是

例如

使用切片,列表和标签的基本 MultiIndex 切片 *** 作

你可以使用 pandasIndexSlice 来让 : 语法显得更自然一些,而不是使用 slice(None)

可以使用这种方法在多个轴同时进行相当复杂的选择

您可以使用布尔索引器来进行与值相关的选择

您还可以为 loc 指定 axis 参数,以在某一个轴上传递切片

此外,您可以使用以下方法设置这些值

也可以在等号右边使用可对齐对象

DataFrame 的 xs() 方法还接受一个 level 参数,以便更容易在 MultiIndex 的特定级别上选择数据

使用切片

您还可以为 xs 提供 axis 参数来选择列

使用切片

xs 还允许使用多个键进行选择

使用切片

您可以将 drop_level=False 传递给 xs ,以保留所选择的级别

使用 drop_level=True (默认值)与上面的结果比较

在 pandas 对象的 reindex() 和 align() 方法中使用 level 参数,可以在一个级别上广播值

swaplevel() 方法可以切换两个级别的顺序

reorder_levels() 方法是 swaplevel 方法的推广,允许你在一个步骤中排列分层索引级别

rename() 方法可用于重命名 MultiIndex 的标签,通常用于重命名 DataFrame 的列

rename 的 columns 参数允许指定需要重命名的列的字典

这个方法也可以用来重命名 DataFrame 主索引的特定标签

rename_axis() 方法用于重命名 Index 或 MultiIndex 的名称。

特别地,可以指定 MultiIndex 的级别名称,可以使用 reset_index() 将 MultiIndex 移动到列

注意 : DataFrame 的列是一个索引,因此使用 rename_axis 和 columns 参数可以改变该索引的名称

rename 和 rename_axis 都支持指定字典、 Series 或映射函数来将标签/名称映射到新值

当直接使用 Index 对象而不是通过 DataFrame 工作时,可以使用 Indexset_names() 来更改名称

您不能通过 level 设置 MultiIndex 的名称

使用 Indexset_names() 替代

以上就是关于python怎么打开层次化索引全部的内容,包括:python怎么打开层次化索引、python倒排索引(Inverted index)、python列表排序并返回索引等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10147956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存