自定义一种pandas转化为python字典类型的形式

pandas和python对象dict之间的相互转换

  1. pandas转化为dict-----df.to_dict(参数)

    1. 默认参数:“dict”:列标题作为外层dict键值 , 索引(行标题)作为内层dict键值
    2. 参数"list":列标题是外层dict键值,内层是list,没有了行标题
    3. 参数"split":{“index”:[],“columns”:[],“data”:[[]]},将index\columns分开来
    4. 参数"recods":外层是列表,内层是列标题为键值的列表
    5. 参数"index":与参数dict相反,行标题作为外层dict的键值,列标题作为内层dict键值
  2. 当上述都不满足的时候需要自定义pandas对象和dict对象之间的相互转化:

    import pandas as pd
    

    In [ ]:

    df =  pd.DataFrame([
    ['wang','ha','2','5'],
    ['wang','ha1','3','52'],
    ['jian','hw','65','2'],
    ['jian','hw','65','2'],
    ['xian','hw','65','2']
    ],
    columns=['name','i','j','k'])
    group_name = df.groupby('name')
    all_name = [i for i in group_name.groups.keys()]
    all_name
    

    Out[ ]:

    ['jian', 'wang', 'xian']
    

    In [ ]:

    wang_dict = {}
    for key_name,value_name in group_name:
        print(key_name)
        print(value_name)
        group_i = value_name.groupby('i')
        for key_i,value_i in group_i:
            if key_name in wang_dict.keys():
                if key_i in wang_dict[key_name].keys():
                    wang_dict[key_name][key_i].append(value_i.agg('sum').to_list())
                else:
                    wang_dict[key_name].update({key_i:[value_i.agg('sum').to_list()]})
            else:
                wang_dict.update({key_name:{key_i:[value_i.agg('sum').to_list()]}})
    

Out[ ]:

jian
   name   i   j  k
2  jian  hw  65  2
3  jian  hw  65  2
wang
   name    i  j   k
0  wang   ha  2   5
1  wang  ha1  3  52
xian
   name   i   j  k
4  xian  hw  65  2


{'jian': {'hw': [['jianjian', 'hwhw', '6565', '22']]}, 'wang': {'ha': [['wang', 'ha', '2', '5']], 'ha1': [['wang', 'ha1', '3', '52']]}, 'xian': {'hw': [['xian', 'hw', '65', '2']]}}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡卡骨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值