美文网首页生信log
生信Log27|一文总结python不同结构数据的增删查改

生信Log27|一文总结python不同结构数据的增删查改

作者: 小周的万用胶囊 | 来源:发表于2022-09-15 13:29 被阅读0次

    用pandas已经有一段时间了,从初学者到现在发现处理的数据类型除了dataframe以外,一般是字符,列表,字典(json的文件格式)和Series,dataframe在这里总结一下自己常用的操作供以后查阅。

    1、字典

    • 查看字典的key和values
    #查看key
        dict.keys() #打印出全部的keys
        #查看value
        dict.values()
        #查看特定key对应的value
        dict.get(key) #输出的是value
        #遍历所有的key和对应的value
        for k,v in dict.items():
         print(k,v)
    
    • 增加字典的key

      查看了很多资料发现很多都是需要加上值

    增加key的方法

    dict['new_key'] = 'new_value'
    
    #后续如果想要再读进文件相同key中的value最好还是用update,字典会自动舍弃掉重复值,保持key的unique特性,使用list的append有很多重复值
    dict.update({'new_key':'new_value'}) #注意花括号
    
    #两个字典合并
    dict_1 |dict_2
    

    2、列表List

    #循环读取列表并编辑
    list = [a, b, c, d]
    list = [i + '@' for i in list]
    
    #增加元素
    list.append(new_element)
    
    # 删除list中的元素
    list.remove('element')
    
    #插入元素
    list.insert('element')
    
    
    #其他的一些方法是根据索引index(元素所在的位置对列表中的元素进行修改)
    list.pop(list[index]) #后面的元素会自动跟着补齐
    

    3、复杂json(dict)的数据获取

    有一些字典的数据里面包含了很多层嵌套,既有典中典,又有典中list,获取数据时难免,在这里介绍一个包叫jsonPath建议使用Jsonpath的方法(类似Xpath),这个包通过pip install来下载,一些匹配的规则可以到官网上查询他们的教程。

    !pip install jsonpath-ng
    from jsonpath-ng import jsonpath, parse
    
    #构建查询的字段
    query = "$.node_name"
    
    #根据查询的字段去匹配对应的内容,并获取对应内容所在的jsonPath
    #其中value是值,match.full_path返回的是json的值
    value = [match.value for match in parse(query).find(data)]
    value_path = [str(match.full_path) for match in parse(query).find(data)]
    
    #如果key对应的value是个list该怎么匹配
    query = "$.node_name[*]" #这个'[*]'就是列表里面的内容,但这种匹配方法不能拿到
    #匹配列表中的列表
    query = "$.node_name[*][*]"#这两个[*]是有层级关系的后面一个[*]是前一个list的内容
    #在只知道主key的情况下获取层级下的key,可以用类似正则表达式的写法(wildcard)"*" 
    query = "$.main_node.@"
    #在不知道key名字的情况下获取key的名字和key的value
    query = "$.@.*" #适用于这个key对应的是dict或者是string的值
    
    query = "$.@[*]" #适用于key对应的值是list的情况
    

    总结

    • 查阅了一下资料发现python或者其他语言的里,使用的符号[] {}同样也会影响数据的类型(最典型的当属pandas里面形成Series和dataframe),因此在调用这些的时候还需要多多留意

    各位大佬勿喷,有能力的在留言区给各位指个路呗~

    PS:目前集中在列表和字典的操作,一直会更新,就是比较慢(因为不太想写重复的东西)


    参考

    https://stackabuse.com/python-how-to-add-keys-to-dictionary/

    https://devenum.com/append-value-to-an-existing-key-in-a-python-dictionary/

    https://www.geeksforgeeks.org/python-convert-two-lists-into-a-dictionary/

    Jsonptah

    还是字典教程

    相关文章

      网友评论

        本文标题:生信Log27|一文总结python不同结构数据的增删查改

        本文链接:https://www.haomeiwen.com/subject/gjirortx.html