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使用详解

以上是关于pandas使用to_dict方法把datafraem保存为字典形式的主要内容,如果未能解决你的问题,请参考以下文章

Pandas使用to_dict函数将dataframe转化为字典(dict)格式数据并指定orientation参数生成不同形式的字典

Pandas to_dict 意外修改浮点数

带有自定义列名的Python pandas.DataFrame.to_dict

[使用“ to_dict()”和“ json.dump()”通过字典将数据帧转换为JSON

将pandas变为字典,apply

使用 PyMongo 将 Pandas 数据框插入 mongodb