pandas 与 dict 互换

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}}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值