zoukankan      html  css  js  c++  java
  • pandas的DataFrame与python的dict字典之间的相互转换

    一、dict生成DataFrame

     1、如果只有一个dict,即一行dataframe数据

    # 注:dict的形式必须是如下2种,不然会报错
    
    # 1、dict外面加一层list【】
    dict_a = [{'a': 0, 'b': 1, 'c': 2}] 
    
    
    # 2、dict内部的数据至少有1个或多个是list形式
    # 注:此时dict外面如果加上list,即[{}]形式,生成的df,有[]的数据是list形式
    dict_a = {'a': [0], 'b': 1, 'c': 2}  # 任意一个list
    dict_a = {'a': [0], 'b': [1], 'c': 2}  # 任意多个list
    dict_a = {'a': [0], 'b': [1], 'c': [2]}
    
    
    pd.DataFrame(dict_a)
    >>
    输出:

     2、多行dataframe

    # 多行有以下3种形式:
    
    # list里面套多个dict,一个dict是一行数据。
    # 注:dict里面的数据如果是list( 'a': [0]形式),生成的df数据也是list形式
    dict_b = [{'a': 0, 'b': 1, 'c': 2}, {'a': 3, 'b': 4, 'c': 5}, {'a': 6, 'b': 7, 'c': 8}]
    
    
    # dict形式,数据是list形式。
    # 注:如果是一行数据,需要是list形式,不然会报错
    dict_b = {'a': [0, 3, 6], 'b': [1, 4, 7], 'c': [2, 5, 8]}
    
    
    # 这种情况针对有一列数据一样的情况:
    dict_b = {'a': 1, 'b': [1, 4, 7], 'c': [2, 5, 8]}  # a列全为1,可以简写
    
    >>
    输出:

     二、pandas转换为dict

    使用方法df.to_dict()

    参数:'dict' (默认) ,'list','series','split','records','index'

    # 拿上面的数据举例,df_b
         a    b    c
    0    0    1    2
    1    3    4    5
    2    6    7    8
    
    
    # 1、不传入参数,默认是'dict'
    df_b.to_dict()  # 列标题作为外层dict键值,索引作为内层dict键值
    >> 
    {'a': {0: 0, 1: 3, 2: 6}, 'b': {0: 1, 1: 4, 2: 7}, 'c': {0: 2, 1: 5, 2: 8}}
    
    
    # 2、'list'
    df_b.to_dict('list')  # 列标题是外层键值,内层是list
    >>
    {'a': [0, 3, 6], 'b': [1, 4, 7], 'c': [2, 5, 8]}
    
    # 3、'split'
    df_b.to_dict('split')  # 将列标题,索引,数据分开
    >>
    {'index': [0, 1, 2],
     'columns': ['a', 'b', 'c'],
     'data': [[0, 1, 2], [3, 4, 5], [6, 7, 8]]}
    
    
    # 4、'records'
    df_b.to_dict('records')  # 外层列表,内层是列标题为键值的列表
    >>
    [{'a': 0, 'b': 1, 'c': 2}, {'a': 3, 'b': 4, 'c': 5}, {'a': 6, 'b': 7, 'c': 8}]
    
    
    # 5、'index'
    df_b.to_dict('index')  # 与参数1相反:索引作为外层dict键值,列标题作为内层dict键值
    >>
    {0: {'a': 0, 'b': 1, 'c': 2}, 1: {'a': 3, 'b': 4, 'c': 5}, 2: {'a': 6, 'b': 7, 'c': 8}}
  • 相关阅读:
    [OpenCV]基于arm64和Python2、Python3的opencv-python-contrib编译
    [Jupyter_Notebook]Windows下Jupyter-Notebook更换默认目录
    【Vmware】NAT模式下网络无法连接
    COCO数据集转mask
    [COCO数据集]关于instances中的分割信息按部分类别进行获取及保存
    Leetcode147-对链表进行插入排序(Python3实现)
    Leetcode1415-长度为 n 的开心字符串中字典序第 k 小的字符串(Python3实现)
    Leetcode1353-最多可以参加的会议数目(Python3实现)
    RabbitMQ 官方NET教程(六)【RPC】
    RabbitMQ 官方NET教程(五)【Topic】
  • 原文地址:https://www.cnblogs.com/jaysonteng/p/12797519.html
Copyright © 2011-2022 走看看