【Pandas】将DataFrame对象转换为字典或列表的方法 |
您所在的位置:网站首页 › python把数组变成字典 › 【Pandas】将DataFrame对象转换为字典或列表的方法 |
一. 数据准备
使用Excel创建一个名为 “demo.csv”的文件,并用pd.read_csv()的方法读入: import pandas as pd category = pd.read_csv(r'C:\Users\16676\Desktop\demo.csv') print(category)csv文件的内容如下,为避免歧义,这里做如下规定: 二. 将DataFrame对象转换为字典 1. 将指定列作为键,另一列作为值:注 :不指定索引时,默认直接使用df对象的行索引充当键 # 将'index'作为键,'category'作为值 category_dict1 = category.set_index('index')['category'].to_dict() print(f'dict1-->{dict1}') # 将'category'作为键,'index'作为值 category_dict2 = category.set_index('category')['index'].to_dict() print(f'dict2-->{dict2}') # 不指定索引 category_dict3 = category['category'].to_dict() print(f'不指定索引时-->{category_dict3}')效果如下: 2. 将整个DataFrame转换为字典此时,输出格式为字典嵌套字典:列名充当外层字典的key,内层字典充当外层字典的value,其中内层字典的key为行索引,内层字典的value为各列元素值 : # to_dict()可以指定输出格式,默认值为'dict' category_dict = category.to_dict() print(f'输出格式为"dict"时-->{category_dict}')效果如下: 3. 将df对象的每一列转换为一个字典 此时,列名作为外层字典的key,每列的值作为一个列表充当字典的value : # 指定输出格式为'list' category_dict = category.to_dict('list') print(f'输出格式为"list"时-->{category_dict}')效果如下: 4. 将df对象的每一行转换为一个字典 此时,key为该列的列名,value为元素值,外层用列表包裹 : # 指定输出格式为'records' category_dict = category.to_dict('records') print(f'输出格式为"records"时-->{category_dict}')效果如下: 5. 将df对象的每一个series转换为一个字典 此时,key为series的'Name',value为series本身: # 指定输出格式为'series' category_dict = category.to_dict('series') print(category.category) print(type(category.category)) print(f'输出格式为"records"时-->{category_dict}')查看原始的Series输出如下:
转换后的效果如下: 三. 将DataFrame转换为列表的方法 相比将DataFrame转换为字典,将其转换为列表的应用场景并不多,这里只做简单介绍: # 1.转换为二维列表(每一行作为一个子列表) category_list1 = category.values.tolist() print(f'每一行作为一个子列表:\n{category_list1}') # 2.转换为按列转置后的列表(将每一列转换为一个列表) category_list3 = category.T.apply(lambda row: row.tolist(), axis=1).tolist() print(f'将每一列转换为一个列表:\n{category_list3}') # 3.转换为一维列表,包含所有元素 category_list2 = category.values.flatten().tolist() print(f'转换为一维列表:\n{category_list2}') # 4.只转换特定列为列表 category_col = category['category'].tolist() print(f'转换特定列为列表:\n{category_col}')效果如下:
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |