【问题标题】:Conversion of dataframe to required dictionary format将数据帧转换为所需的字典格式
【发布时间】:2021-01-01 21:05:04
【问题描述】:

我正在尝试将以下数据框转换为字典

数据框:

import pandas as pd
df = pd.DataFrame({'a':['A','A','B','B','B','C'], 'b':[1,2,5,5,4,6], 'c':[4,3,5,5,5,3], 'd':[3,4,5,5,7,8]})
print(df)

示例数据框:

   a  b  c  d
0  A  1  4  3
1  A  2  3  4
2  B  5  5  5
3  B  5  5  5
4  B  4  5  7
5  C  6  3  8

我需要下面提到的字典格式的这个数据框

[{"a":"A","data_values":[{"b":1,"c":4,"d":3},{"b":2,"c":3,"d":4}]}, 
 {"a":"B","data_values":[{"b":5,"c":5,"d":5},{"b":5,"c":5,"d":5}, 
 {"b":4,"c":5,"d":7}]},{"a":"C","data_values":[{"b":6,"c":3,"d":8}]}]

【问题讨论】:

    标签: python-3.x pandas dataframe dictionary pandas-groupby


    【解决方案1】:

    使用 DataFrame.groupby 和自定义 lambda 函数,通过 DataFrame.to_dict 将值转换为字典:

    L = (df.set_index('a')
           .groupby('a')
           .apply(lambda x: x.to_dict('records'))
           .reset_index(name='data_values')
           .to_dict('records')
           )
    print (L)
    [{'a': 'A', 'data_values': [{'b': 1, 'c': 4, 'd': 3}, 
                                {'b': 2, 'c': 3, 'd': 4}]}, 
     {'a': 'B', 'data_values': [{'b': 5, 'c': 5, 'd': 5}, 
                                {'b': 5, 'c': 5, 'd': 5},
                                {'b': 4, 'c': 5, 'd': 7}]}, 
     {'a': 'C', 'data_values': [{'b': 6, 'c': 3, 'd': 8}]}]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 2017-10-10
      • 1970-01-01
      相关资源
      最近更新 更多