pandas使用to_dict方法把datafraem保存为字典形式
Posted Data+Science+Insight
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas使用to_dict方法把datafraem保存为字典形式相关的知识,希望对你有一定的参考价值。
pandas使用to_dict方法把datafraem保存为字典形式
pandas.DataFrame.to_dict
# 默认orient ='columns'
data = {'poet': ['李白', '龚自珍', '苏轼', '席慕容'], 'dynasty': ['唐朝', '清朝', '宋朝', '民国']}
df = pd.DataFrame.from_dict(data)
#
# 默认orient为dict
# 返回格式为:{column -> {index -> value}}
df.to_dict()
{'poet': {0: '李白', 1: '龚自珍', 2: '苏轼', 3: '席慕容'},
'dynasty': {0: '唐朝', 1: '清朝', 2: '宋朝', 3: '民国'}}
#
# 默认orient为dict
# 返回格式为:{column -> {index -> value}}
df.to_dict('dict')
{'poet': {0: '李白', 1: '龚自珍', 2: '苏轼', 3: '席慕容'},
'dynasty': {0: '唐朝', 1: '清朝', 2: '宋朝', 3: '民国'}}
#
#返回格式为:{column -> Series(values)}
df.to_dict('series')
{'poet': 0 李白
1 龚自珍
2 苏轼
3 席慕容
Name: poet, dtype: object,
'dynasty': 0 唐朝
1 清朝
2 宋朝
3 民国
Name: dynasty, dtype: object}
#
# 返回格式为 {‘index’ -> [index], ‘columns’ -> [columns], ‘data’ -> [values]}
df.to_dict('split')
{'index': [0, 1, 2, 3],
'columns': ['poet', 'dynasty'],
'data': [['李白', '唐朝'], ['龚自珍', '清朝'], ['苏轼', '宋朝'], ['席慕容', '民国']]}
#
# 返回格式为 [{column -> value}, … , {column -> value}]
df.to_dict('records')
[{'poet': '李白', 'dynasty': '唐朝'},
{'poet': '龚自珍', 'dynasty': '清朝'},
{'poet': '苏轼', 'dynasty': '宋朝'},
{'poet': '席慕容', 'dynasty': '民国'}]
#
# 返回格式为 {index -> {column -> value}}
df.to_dict('index')
{0: {'poet': '李白', 'dynasty': '唐朝'},
1: {'poet': '龚自珍', 'dynasty': '清朝'},
2: {'poet': '苏轼', 'dynasty': '宋朝'},
3: {'poet': '席慕容', 'dynasty': '民国'}}
#
#也可以指定映射转换的类型
# 有序字典Oderdict,保证字典读取的顺序是固定的;
from collections import OrderedDict, defaultdict
# into = OrderDict
df.to_dict(into=OrderedDict)
OrderedDict([('poet',
OrderedDict([(0, '李白'), (1, '龚自珍'), (2, '苏轼'), (3, '席慕容')])),
('dynasty',
OrderedDict([(0, '唐朝'), (1, '清朝'), (2, '宋朝'), (3, '民国')]))])
#
#也可以指定映射转换的类型
# 默认字典,defaultdict,定义字典的默认格式;
# 此处自定字典的默认值为list列表类型;
dd = defaultdict(list)
dd
# defaultdict(list, {})
# into = OrderDict
df.to_dict('records', into=dd)
[defaultdict(list, {'poet': '李白', 'dynasty': '唐朝'}),
defaultdict(list, {'poet': '龚自珍', 'dynasty': '清朝'}),
defaultdict(list, {'poet': '苏轼', 'dynasty': '宋朝'}),
defaultdict(list, {'poet': '席慕容', 'dynasty': '民国'})]
# 注意如果你需要索引的key在字典中不存在那他就给你返回默认值并吧这个键加在了字典里面
dd['city'] = 'bangkok'
dd['country'] = 'thailand'
print(dd)
print(dd['country'])
print(dd['county'])
print(dd['村子'])
defaultdict(<class 'list'>, {'city': 'bangkok', 'country': 'thailand'})
thailand
[]
[]
#
print(dd)
defaultdict(<class 'list'>, {'city': 'bangkok', 'country': 'thailand', 'county': [], '村子': []})
'county': [], '村子': []就是新加进来的内容,都是给了默认值一个空的列表;
参考:pandas to_dict
参考:python中defaultdict用法详解
以上是关于pandas使用to_dict方法把datafraem保存为字典形式的主要内容,如果未能解决你的问题,请参考以下文章
Pandas使用to_dict函数将dataframe转化为字典(dict)格式数据并指定orientation参数生成不同形式的字典
带有自定义列名的Python pandas.DataFrame.to_dict