如何将pandas字典直接转换为DataFrame?

2026-04-30 15:211阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3108个文字,预计阅读时间需要13分钟。

如何将pandas字典直接转换为DataFrame?

目录

一、字典转DataFrame

1.字典转DataFrame的基本操作

2.示例:字典转DataFrame

二、DataFrame转字典

1.DataFrame转字典的方法

2.函数介绍

2.1 orient='dict' 2.2 orient='list' 2.3 orient='series' 2.4 orient='split' 2.5 orient='rec'

目录
  • 一、字典转dataFrame
    • 1、字典转dataFrame比较简单,直接给出示例:
  • 二、dataFrame转字典
    • 1、DataFrame.to_dict() 函数介绍
    • 2、orient =‘dict’
    • 3、 orient =‘list’
    • 4、orient =‘series’
    • 5、orient =‘split’
    • 6、orient =‘records’
    • 7、orient =‘index’
    • 8、指定列为key生成字典的实现步骤(按行)
    • 9、指定列为key,value生成字典的实现
  • 总结

    一、字典转dataFrame

    1、字典转dataFrame比较简单,直接给出示例:

    import pandas as pd dic = { 'name':['张三','李四','王二','麻子','小红','小兰','小玉','小强','小娟','小明'], 'num':[802,807,801,803,806,805,808,809,800,804], 'height': [183, 161, 163, 163, 156, 186, 184, 154, 153, 174], 'weight': [87, 60, 71, 74, 45, 50, 47, 67, 49, 70], 'gender': ['男', '男', '男', '男', '女', '女', '女', '男', '女', '男'], 'age': [25, 30, 25, 26, 27, 20, 23, 26, 30, 30] } df=pd.DataFrame(dic) print(df)

    结果:

    二、dataFrame转字典

    1、DataFrame.to_dict() 函数介绍

    pandas中经常用的是 DataFrame.to_dict() 函数将dataFrame转化为字典类型(字典的查询速度很快

    函数DataFrame.to_dict(orient=‘dict’, into=<class ‘dict’>)

    • orient =‘dict’,是函数默认的,转化后的字典形式:{column(列名) : {index(行名) : value(值)}};
    • orient =‘list’ ,转化后的字典形式:{column(列名) :{[values](值)}};
    • orient =‘series’ ,转化后的字典形式:{column(列名) : Series (values) (值)};
    • orient =‘split’ ,转化后的字典形式:{‘index’ : [index],‘columns’ :[columns],’data‘ : [values]};
    • orient =‘records’ ,转化后是 list形式:[{column(列名) :value(值)}…{column:value}];
    • orient =‘index’ ,转化后的字典形式:{index(值) :{column(列名) : value(值)}};

    dataFrame.to_dict() 结果默认 index 是 key ,其他字段是和 index 对应的 value

    2、orient =‘dict’

    orient =‘dict’ 是函数默认的,转化后的字典形式:{column(列名) : {index(行名) : value(值)}}

    dic1 = df.to_dict() print(dic1)

    结果:

    {
    'name': {0: '张三', 1: '李四', 2: '王二', 3: '麻子', 4: '小红', 5: '小兰', 6: '小玉', 7: '小强', 8: '小娟', 9: '小明'},
    'num': {0: 802, 1: 807, 2: 801, 3: 803, 4: 806, 5: 805, 6: 808, 7: 809, 8: 800, 9: 804},
    'height': {0: 183, 1: 161, 2: 163, 3: 163, 4: 156, 5: 186, 6: 184, 7: 154, 8: 153, 9: 174},
    'weight': {0: 87, 1: 60, 2: 71, 3: 74, 4: 45, 5: 50, 6: 47, 7: 67, 8: 49, 9: 70},
    'gender': {0: '男', 1: '男', 2: '男', 3: '男', 4: '女', 5: '女', 6: '女', 7: '男', 8: '女', 9: '男'},
    'age': {0: 25, 1: 30, 2: 25, 3: 26, 4: 27, 5: 20, 6: 23, 7: 26, 8: 30, 9: 30}
    }

    3、 orient =‘list’

    orient =‘list’ ,转化后的字典形式:{column(列名) :{[values](值)}};

    dic1 = df.to_dict('list') print(dic1)

    结果:

    {
    'name': ['张三', '李四', '王二', '麻子', '小红', '小兰', '小玉', '小强', '小娟', '小明'],
    'num': [802, 807, 801, 803, 806, 805, 808, 809, 800, 804],
    'height': [183, 161, 163, 163, 156, 186, 184, 154, 153, 174],
    'weight': [87, 60, 71, 74, 45, 50, 47, 67, 49, 70],
    'gender': ['男', '男', '男', '男', '女', '女', '女', '男', '女', '男'],
    'age': [25, 30, 25, 26, 27, 20, 23, 26, 30, 30]
    }

    4、orient =‘series’

    orient =‘series’ ,转化后的字典形式:{column(列名) : Series (values) (值)}

    dic1 = df.to_dict('series') print(dic1)

    结果:

    {
    'name':
    0 张三
    1 李四
    2 王二
    3 麻子
    4 小红
    5 小兰
    6 小玉
    7 小强
    8 小娟
    9 小明
    Name: name, dtype: object,
    'num':
    0 802
    1 807
    2 801
    3 803
    4 806
    5 805
    6 808
    7 809
    8 800
    9 804
    Name: num, dtype: int64,
    'height':
    0 183
    1 161
    2 163
    3 163
    4 156
    5 186
    6 184
    7 154
    8 153
    9 174
    Name: height, dtype: int64,
    'weight':
    0 87
    1 60
    2 71
    3 74
    4 45
    5 50
    6 47
    7 67
    8 49
    9 70
    Name: weight, dtype: int64,
    'gender':
    0 男
    1 男
    2 男
    3 男
    4 女
    5 女
    6 女
    7 男
    8 女
    9 男
    Name: gender, dtype: object,
    'age':
    0 25
    1 30
    2 25
    3 26
    4 27
    5 20
    6 23
    7 26
    8 30
    9 30
    Name: age, dtype: int64}

    5、orient =‘split’

    orient =‘split’ ,转化后的字典形式:{‘index’ : [index],‘columns’ :[columns],’data‘ : [values]}

    {'index': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    'columns': ['name', 'num', 'height', 'weight', 'gender', 'age'],
    'data': [
    ['张三', 802, 183, 87, '男', 25],
    ['李四', 807, 161, 60, '男', 30],
    ['王二', 801, 163, 71, '男', 25],
    ['麻子', 803, 163, 74, '男', 26],
    ['小红', 806, 156, 45, '女', 27],
    ['小兰', 805, 186, 50, '女', 20],
    ['小玉', 808, 184, 47, '女', 23],
    ['小强', 809, 154, 67, '男', 26],
    ['小娟', 800, 153, 49, '女', 30],
    ['小明', 804, 174, 70, '男', 30]
    ]
    }

    6、orient =‘records’

    orient =‘records’ ,转化后是 list形式:[{column(列名) :value(值)}…{column:value}]

    dic1 = df.to_dict('records') print(dic1)

    结果:

    [
    {'name': '张三', 'num': 802, 'height': 183, 'weight': 87, 'gender': '男', 'age': 25},
    {'name': '李四', 'num': 807, 'height': 161, 'weight': 60, 'gender': '男', 'age': 30},
    {'name': '王二', 'num': 801, 'height': 163, 'weight': 71, 'gender': '男', 'age': 25},
    {'name': '麻子', 'num': 803, 'height': 163, 'weight': 74, 'gender': '男', 'age': 26},
    {'name': '小红', 'num': 806, 'height': 156, 'weight': 45, 'gender': '女', 'age': 27},
    {'name': '小兰', 'num': 805, 'height': 186, 'weight': 50, 'gender': '女', 'age': 20},
    {'name': '小玉', 'num': 808, 'height': 184, 'weight': 47, 'gender': '女', 'age': 23},
    {'name': '小强', 'num': 809, 'height': 154, 'weight': 67, 'gender': '男', 'age': 26},
    {'name': '小娟', 'num': 800, 'height': 153, 'weight': 49, 'gender': '女', 'age': 30},
    {'name': '小明', 'num': 804, 'height': 174, 'weight': 70, 'gender': '男', 'age': 30}
    ]

    7、orient =‘index’

    orient =‘index’ ,转化后的字典形式:{index(值) :{column(列名) : value(值)}}

    dic1 = df.to_dict('index') print(dic1)

    结果:

    {
    0: {'name': '张三', 'num': 802, 'height': 183, 'weight': 87, 'gender': '男', 'age': 25},
    1: {'name': '李四', 'num': 807, 'height': 161, 'weight': 60, 'gender': '男', 'age': 30},
    2: {'name': '王二', 'num': 801, 'height': 163, 'weight': 71, 'gender': '男', 'age': 25},
    3: {'name': '麻子', 'num': 803, 'height': 163, 'weight': 74, 'gender': '男', 'age': 26},
    4: {'name': '小红', 'num': 806, 'height': 156, 'weight': 45, 'gender': '女', 'age': 27},
    5: {'name': '小兰', 'num': 805, 'height': 186, 'weight': 50, 'gender': '女', 'age': 20},
    6: {'name': '小玉', 'num': 808, 'height': 184, 'weight': 47, 'gender': '女', 'age': 23},
    7: {'name': '小强', 'num': 809, 'height': 154, 'weight': 67, 'gender': '男', 'age': 26},
    8: {'name': '小娟', 'num': 800, 'height': 153, 'weight': 49, 'gender': '女', 'age': 30},
    9: {'name': '小明', 'num': 804, 'height': 174, 'weight': 70, 'gender': '男', 'age': 30}
    }

    8、指定列为key生成字典的实现步骤(按行)

    1、 set_index用于将想设置为key的列设置为数据框索引

    df.set_index("name", drop=True, inplace=True) # 其中 drop=True去重,inplace=True在原数据上更改

    结果:

    2、使用orient=index参数将索引用作字典键。

    dictionary = df.to_dict(orient="index") print(dictionary)

    结果

    {
    '张三': {'num': 802, 'height': 183, 'weight': 87, 'gender': '男', 'age': 25},
    '李四': {'num': 807, 'height': 161, 'weight': 60, 'gender': '男', 'age': 30},
    '王二': {'num': 801, 'height': 163, 'weight': 71, 'gender': '男', 'age': 25},
    '麻子': {'num': 803, 'height': 163, 'weight': 74, 'gender': '男', 'age': 26},
    '小红': {'num': 806, 'height': 156, 'weight': 45, 'gender': '女', 'age': 27},
    '小兰': {'num': 805, 'height': 186, 'weight': 50, 'gender': '女', 'age': 20},
    '小玉': {'num': 808, 'height': 184, 'weight': 47, 'gender': '女', 'age': 23},
    '小强': {'num': 809, 'height': 154, 'weight': 67, 'gender': '男', 'age': 26},
    '小娟': {'num': 800, 'height': 153, 'weight': 49, 'gender': '女', 'age': 30},
    '小明': {'num': 804, 'height': 174, 'weight': 70, 'gender': '男', 'age': 30}
    }

    3、将步骤1、2合起来写也可以,这里不修改源数据

    dictionary = df.set_index("name", drop=True).to_dict(orient="index")

    9、指定列为key,value生成字典的实现

    1、指定一个列为key,一列为value

    dictionary = df.set_index("name")["num"].to_dict() print(dictionary)

    结果

    {
    '张三': 802,
    '李四': 807,
    '王二': 801,
    '麻子': 803,
    '小红': 806,
    '小兰': 805,
    '小玉': 808,
    '小强': 809,
    '小娟': 800,
    '小明': 804
    }

    2、指定多个列为key,一列为value

    dictionary = df.set_index(["name","num"])["weight"].to_dict() print(dictionary)

    结果:

    {
    ('张三', 802): 87,
    ('李四', 807): 60,
    ('王二', 801): 71,
    ('麻子', 803): 74,
    ('小红', 806): 45,
    ('小兰', 805): 50,
    ('小玉', 808): 47,
    ('小强', 809): 67,
    ('小娟', 800): 49,
    ('小明', 804): 70
    }

    3、指定一个列为key,多列为value

    方法1(速度慢)

    dictionary = {c0:[c1,c2] for c0,c1,c2 in zip(df['name'],df['num'],df['weight'])} print(dictionary)

    方法2(速度快)

    dictionary = df[["name",'num','weight']].set_index('name').T.to_dict('list') print(dictionary)

    结果:

    {
    '张三': [802, 87],
    '李四': [807, 60],
    '王二': [801, 71],
    '麻子': [803, 74],
    '小红': [806, 45],
    '小兰': [805, 50],
    '小玉': [808, 47],
    '小强': [809, 67],
    '小娟': [800, 49],
    '小明': [804, 70]
    }

    4、 指定多列为key,多列为value

    dictionary = df[["name",'num','weight',"age"]].set_index(['name','num']).T.to_dict('list') print(dictionary)

    结果:

    {
    ('张三', 802): [87, 25],
    ('李四', 807): [60, 30],
    ('王二', 801): [71, 25],
    ('麻子', 803): [74, 26],
    ('小红', 806): [45, 27],
    ('小兰', 805): [50, 20],
    ('小玉', 808): [47, 23],
    ('小强', 809): [67, 26],
    ('小娟', 800): [49, 30],
    ('小明', 804): [70, 30]
    }

    参考pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_dict.html

    如何将pandas字典直接转换为DataFrame?

    总结

    到此这篇关于pandas中字典和dataFrame相互转换的文章就介绍到这了,更多相关字典和dataFrame相互转换内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

    标签:相互

    本文共计3108个文字,预计阅读时间需要13分钟。

    如何将pandas字典直接转换为DataFrame?

    目录

    一、字典转DataFrame

    1.字典转DataFrame的基本操作

    2.示例:字典转DataFrame

    二、DataFrame转字典

    1.DataFrame转字典的方法

    2.函数介绍

    2.1 orient='dict' 2.2 orient='list' 2.3 orient='series' 2.4 orient='split' 2.5 orient='rec'

    目录
    • 一、字典转dataFrame
      • 1、字典转dataFrame比较简单,直接给出示例:
    • 二、dataFrame转字典
      • 1、DataFrame.to_dict() 函数介绍
      • 2、orient =‘dict’
      • 3、 orient =‘list’
      • 4、orient =‘series’
      • 5、orient =‘split’
      • 6、orient =‘records’
      • 7、orient =‘index’
      • 8、指定列为key生成字典的实现步骤(按行)
      • 9、指定列为key,value生成字典的实现
    • 总结

      一、字典转dataFrame

      1、字典转dataFrame比较简单,直接给出示例:

      import pandas as pd dic = { 'name':['张三','李四','王二','麻子','小红','小兰','小玉','小强','小娟','小明'], 'num':[802,807,801,803,806,805,808,809,800,804], 'height': [183, 161, 163, 163, 156, 186, 184, 154, 153, 174], 'weight': [87, 60, 71, 74, 45, 50, 47, 67, 49, 70], 'gender': ['男', '男', '男', '男', '女', '女', '女', '男', '女', '男'], 'age': [25, 30, 25, 26, 27, 20, 23, 26, 30, 30] } df=pd.DataFrame(dic) print(df)

      结果:

      二、dataFrame转字典

      1、DataFrame.to_dict() 函数介绍

      pandas中经常用的是 DataFrame.to_dict() 函数将dataFrame转化为字典类型(字典的查询速度很快

      函数DataFrame.to_dict(orient=‘dict’, into=<class ‘dict’>)

      • orient =‘dict’,是函数默认的,转化后的字典形式:{column(列名) : {index(行名) : value(值)}};
      • orient =‘list’ ,转化后的字典形式:{column(列名) :{[values](值)}};
      • orient =‘series’ ,转化后的字典形式:{column(列名) : Series (values) (值)};
      • orient =‘split’ ,转化后的字典形式:{‘index’ : [index],‘columns’ :[columns],’data‘ : [values]};
      • orient =‘records’ ,转化后是 list形式:[{column(列名) :value(值)}…{column:value}];
      • orient =‘index’ ,转化后的字典形式:{index(值) :{column(列名) : value(值)}};

      dataFrame.to_dict() 结果默认 index 是 key ,其他字段是和 index 对应的 value

      2、orient =‘dict’

      orient =‘dict’ 是函数默认的,转化后的字典形式:{column(列名) : {index(行名) : value(值)}}

      dic1 = df.to_dict() print(dic1)

      结果:

      {
      'name': {0: '张三', 1: '李四', 2: '王二', 3: '麻子', 4: '小红', 5: '小兰', 6: '小玉', 7: '小强', 8: '小娟', 9: '小明'},
      'num': {0: 802, 1: 807, 2: 801, 3: 803, 4: 806, 5: 805, 6: 808, 7: 809, 8: 800, 9: 804},
      'height': {0: 183, 1: 161, 2: 163, 3: 163, 4: 156, 5: 186, 6: 184, 7: 154, 8: 153, 9: 174},
      'weight': {0: 87, 1: 60, 2: 71, 3: 74, 4: 45, 5: 50, 6: 47, 7: 67, 8: 49, 9: 70},
      'gender': {0: '男', 1: '男', 2: '男', 3: '男', 4: '女', 5: '女', 6: '女', 7: '男', 8: '女', 9: '男'},
      'age': {0: 25, 1: 30, 2: 25, 3: 26, 4: 27, 5: 20, 6: 23, 7: 26, 8: 30, 9: 30}
      }

      3、 orient =‘list’

      orient =‘list’ ,转化后的字典形式:{column(列名) :{[values](值)}};

      dic1 = df.to_dict('list') print(dic1)

      结果:

      {
      'name': ['张三', '李四', '王二', '麻子', '小红', '小兰', '小玉', '小强', '小娟', '小明'],
      'num': [802, 807, 801, 803, 806, 805, 808, 809, 800, 804],
      'height': [183, 161, 163, 163, 156, 186, 184, 154, 153, 174],
      'weight': [87, 60, 71, 74, 45, 50, 47, 67, 49, 70],
      'gender': ['男', '男', '男', '男', '女', '女', '女', '男', '女', '男'],
      'age': [25, 30, 25, 26, 27, 20, 23, 26, 30, 30]
      }

      4、orient =‘series’

      orient =‘series’ ,转化后的字典形式:{column(列名) : Series (values) (值)}

      dic1 = df.to_dict('series') print(dic1)

      结果:

      {
      'name':
      0 张三
      1 李四
      2 王二
      3 麻子
      4 小红
      5 小兰
      6 小玉
      7 小强
      8 小娟
      9 小明
      Name: name, dtype: object,
      'num':
      0 802
      1 807
      2 801
      3 803
      4 806
      5 805
      6 808
      7 809
      8 800
      9 804
      Name: num, dtype: int64,
      'height':
      0 183
      1 161
      2 163
      3 163
      4 156
      5 186
      6 184
      7 154
      8 153
      9 174
      Name: height, dtype: int64,
      'weight':
      0 87
      1 60
      2 71
      3 74
      4 45
      5 50
      6 47
      7 67
      8 49
      9 70
      Name: weight, dtype: int64,
      'gender':
      0 男
      1 男
      2 男
      3 男
      4 女
      5 女
      6 女
      7 男
      8 女
      9 男
      Name: gender, dtype: object,
      'age':
      0 25
      1 30
      2 25
      3 26
      4 27
      5 20
      6 23
      7 26
      8 30
      9 30
      Name: age, dtype: int64}

      5、orient =‘split’

      orient =‘split’ ,转化后的字典形式:{‘index’ : [index],‘columns’ :[columns],’data‘ : [values]}

      {'index': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
      'columns': ['name', 'num', 'height', 'weight', 'gender', 'age'],
      'data': [
      ['张三', 802, 183, 87, '男', 25],
      ['李四', 807, 161, 60, '男', 30],
      ['王二', 801, 163, 71, '男', 25],
      ['麻子', 803, 163, 74, '男', 26],
      ['小红', 806, 156, 45, '女', 27],
      ['小兰', 805, 186, 50, '女', 20],
      ['小玉', 808, 184, 47, '女', 23],
      ['小强', 809, 154, 67, '男', 26],
      ['小娟', 800, 153, 49, '女', 30],
      ['小明', 804, 174, 70, '男', 30]
      ]
      }

      6、orient =‘records’

      orient =‘records’ ,转化后是 list形式:[{column(列名) :value(值)}…{column:value}]

      dic1 = df.to_dict('records') print(dic1)

      结果:

      [
      {'name': '张三', 'num': 802, 'height': 183, 'weight': 87, 'gender': '男', 'age': 25},
      {'name': '李四', 'num': 807, 'height': 161, 'weight': 60, 'gender': '男', 'age': 30},
      {'name': '王二', 'num': 801, 'height': 163, 'weight': 71, 'gender': '男', 'age': 25},
      {'name': '麻子', 'num': 803, 'height': 163, 'weight': 74, 'gender': '男', 'age': 26},
      {'name': '小红', 'num': 806, 'height': 156, 'weight': 45, 'gender': '女', 'age': 27},
      {'name': '小兰', 'num': 805, 'height': 186, 'weight': 50, 'gender': '女', 'age': 20},
      {'name': '小玉', 'num': 808, 'height': 184, 'weight': 47, 'gender': '女', 'age': 23},
      {'name': '小强', 'num': 809, 'height': 154, 'weight': 67, 'gender': '男', 'age': 26},
      {'name': '小娟', 'num': 800, 'height': 153, 'weight': 49, 'gender': '女', 'age': 30},
      {'name': '小明', 'num': 804, 'height': 174, 'weight': 70, 'gender': '男', 'age': 30}
      ]

      7、orient =‘index’

      orient =‘index’ ,转化后的字典形式:{index(值) :{column(列名) : value(值)}}

      dic1 = df.to_dict('index') print(dic1)

      结果:

      {
      0: {'name': '张三', 'num': 802, 'height': 183, 'weight': 87, 'gender': '男', 'age': 25},
      1: {'name': '李四', 'num': 807, 'height': 161, 'weight': 60, 'gender': '男', 'age': 30},
      2: {'name': '王二', 'num': 801, 'height': 163, 'weight': 71, 'gender': '男', 'age': 25},
      3: {'name': '麻子', 'num': 803, 'height': 163, 'weight': 74, 'gender': '男', 'age': 26},
      4: {'name': '小红', 'num': 806, 'height': 156, 'weight': 45, 'gender': '女', 'age': 27},
      5: {'name': '小兰', 'num': 805, 'height': 186, 'weight': 50, 'gender': '女', 'age': 20},
      6: {'name': '小玉', 'num': 808, 'height': 184, 'weight': 47, 'gender': '女', 'age': 23},
      7: {'name': '小强', 'num': 809, 'height': 154, 'weight': 67, 'gender': '男', 'age': 26},
      8: {'name': '小娟', 'num': 800, 'height': 153, 'weight': 49, 'gender': '女', 'age': 30},
      9: {'name': '小明', 'num': 804, 'height': 174, 'weight': 70, 'gender': '男', 'age': 30}
      }

      8、指定列为key生成字典的实现步骤(按行)

      1、 set_index用于将想设置为key的列设置为数据框索引

      df.set_index("name", drop=True, inplace=True) # 其中 drop=True去重,inplace=True在原数据上更改

      结果:

      2、使用orient=index参数将索引用作字典键。

      dictionary = df.to_dict(orient="index") print(dictionary)

      结果

      {
      '张三': {'num': 802, 'height': 183, 'weight': 87, 'gender': '男', 'age': 25},
      '李四': {'num': 807, 'height': 161, 'weight': 60, 'gender': '男', 'age': 30},
      '王二': {'num': 801, 'height': 163, 'weight': 71, 'gender': '男', 'age': 25},
      '麻子': {'num': 803, 'height': 163, 'weight': 74, 'gender': '男', 'age': 26},
      '小红': {'num': 806, 'height': 156, 'weight': 45, 'gender': '女', 'age': 27},
      '小兰': {'num': 805, 'height': 186, 'weight': 50, 'gender': '女', 'age': 20},
      '小玉': {'num': 808, 'height': 184, 'weight': 47, 'gender': '女', 'age': 23},
      '小强': {'num': 809, 'height': 154, 'weight': 67, 'gender': '男', 'age': 26},
      '小娟': {'num': 800, 'height': 153, 'weight': 49, 'gender': '女', 'age': 30},
      '小明': {'num': 804, 'height': 174, 'weight': 70, 'gender': '男', 'age': 30}
      }

      3、将步骤1、2合起来写也可以,这里不修改源数据

      dictionary = df.set_index("name", drop=True).to_dict(orient="index")

      9、指定列为key,value生成字典的实现

      1、指定一个列为key,一列为value

      dictionary = df.set_index("name")["num"].to_dict() print(dictionary)

      结果

      {
      '张三': 802,
      '李四': 807,
      '王二': 801,
      '麻子': 803,
      '小红': 806,
      '小兰': 805,
      '小玉': 808,
      '小强': 809,
      '小娟': 800,
      '小明': 804
      }

      2、指定多个列为key,一列为value

      dictionary = df.set_index(["name","num"])["weight"].to_dict() print(dictionary)

      结果:

      {
      ('张三', 802): 87,
      ('李四', 807): 60,
      ('王二', 801): 71,
      ('麻子', 803): 74,
      ('小红', 806): 45,
      ('小兰', 805): 50,
      ('小玉', 808): 47,
      ('小强', 809): 67,
      ('小娟', 800): 49,
      ('小明', 804): 70
      }

      3、指定一个列为key,多列为value

      方法1(速度慢)

      dictionary = {c0:[c1,c2] for c0,c1,c2 in zip(df['name'],df['num'],df['weight'])} print(dictionary)

      方法2(速度快)

      dictionary = df[["name",'num','weight']].set_index('name').T.to_dict('list') print(dictionary)

      结果:

      {
      '张三': [802, 87],
      '李四': [807, 60],
      '王二': [801, 71],
      '麻子': [803, 74],
      '小红': [806, 45],
      '小兰': [805, 50],
      '小玉': [808, 47],
      '小强': [809, 67],
      '小娟': [800, 49],
      '小明': [804, 70]
      }

      4、 指定多列为key,多列为value

      dictionary = df[["name",'num','weight',"age"]].set_index(['name','num']).T.to_dict('list') print(dictionary)

      结果:

      {
      ('张三', 802): [87, 25],
      ('李四', 807): [60, 30],
      ('王二', 801): [71, 25],
      ('麻子', 803): [74, 26],
      ('小红', 806): [45, 27],
      ('小兰', 805): [50, 20],
      ('小玉', 808): [47, 23],
      ('小强', 809): [67, 26],
      ('小娟', 800): [49, 30],
      ('小明', 804): [70, 30]
      }

      参考pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_dict.html

      如何将pandas字典直接转换为DataFrame?

      总结

      到此这篇关于pandas中字典和dataFrame相互转换的文章就介绍到这了,更多相关字典和dataFrame相互转换内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

      标签:相互