【问题标题】:convert list of value in nested dictionary to dataframe将嵌套字典中的值列表转换为数据框
【发布时间】:2022-09-27 21:28:35
【问题描述】:

我有一本表格的字典

req_rep = {
  \"enrichments\": [
    {
      \"data\": {
        \"Company_name\": \"tester\",
        \"Company_CXO_Count__c\": null,  
        \"fbm__Company_Employee_Size__c\": \"11-50\", 
        \"fbm__Person_Title__c\": \"instructor\", 
        \"fbm__Professional_Email__c\": \"small@tester.com\", 
        \"fbm__Status__c\": \"Completed\"
      }, 
      \"id\": \"t1\", 
      \"status\": \"COMPLETED\"
    }, 
    {
      \"data\": {
        \"Company_name\": \"test3\",
        \"Company_CXO_Count__c\": null, 
        \"fbm__Company_Employee_Size__c\": \"11-50\", 
        \"fbm__Person_Title__c\": \"driver\", 
        \"fbm__Professional_Email__c\": \"big@test3.com\", 
        \"fbm__Status__c\": \"Completed\"
      }, 
      \"id\": \"t2\", 
      \"status\": \"COMPLETED\"
    }, 
    {
      \"data\": {
        \"Company_name\": \"tryiu\",
        \"Company_CXO_Count__c\": null, 
        \"fbm__Company_Employee_Size__c\": null, 
        \"fbm__Person_Title__c\": null, 
        \"fbm__Professional_Email__c\": \"dar@tryiu.co\", 
        \"fbm__Status__c\": \"Completed\"
      }, 
      \"id\": \"t2\", 
      \"status\": \"COMPLETED\"
    }
  ], 
  \"expiry_date\": \"2022-03-11 11:24:35\", 
  \"remaining_requests\": 19106, 
  \"request_id\": \"16642740180563593e3c\", 
  \"total_requests\": 20000
}

我希望从丰富的键值对中创建一个新的数据框,如下表所示。

我已经尝试了一些关于堆栈溢出的搜索结果,但我还没有得到我正在寻找的预期结果。

df_2 = pd.DataFrame([{
  \'Company_name\': \"tester\",
  \'Company_CXO_Count__c\': null,
  \'fbm__Company_Employee_Size__c\': \"11-50\",
  \'fbm__Person_Title__c\': \"instructor\",
  \'fbm__Professional_Email__c\': \"big@test3.com\",
  \'fbm__Status__c\': \"Completed\"},
 {\'Company_name\': \"tester\",
  \'Company_CXO_Count__c\': null,
  \'fbm__Company_Employee_Size__c\': \"11-50\",
  \'fbm__Person_Title__c\': \"instructor\",
  \'fbm__Professional_Email__c\': \"small@tester.com\",
  \'fbm__Status__c\': \"Completed\"},
 { \'Company_name\': \"tryiu\",
  \'Company_CXO_Count__c\': null,
  \'fbm__Company_Employee_Size__c\': null,
  \'fbm__Person_Title__c\': null,
  \'fbm__Professional_Email__c\': \"dar@tryiu.com\",
  \'fbm__Status__c\': \"Completed\"}])

任何帮助将不胜感激

    标签: pandas


    【解决方案1】:

    您需要将pd.Series 应用到enrichmentsdata

    df = pd.DataFrame(req_rep)
    final_df = df['enrichments'].agg(pd.Series)['data'].agg(pd.Series)
    

    【讨论】:

      【解决方案2】:

      利用:

      df=pd.DataFrame(req_rep['enrichments'])
      final = pd.json_normalize(df["data"])
      

      【讨论】:

        【解决方案3】:

        试试json_normalize

        df2 = pd.json_normalize(data=req_rep["enrichments"])
        df2.columns = df2.columns.str.split(".").str[-1]
        df2 = df2.drop(columns=["id", "status"])
        

        【讨论】:

          猜你喜欢
          • 2021-03-03
          • 1970-01-01
          • 1970-01-01
          • 2022-12-05
          • 2014-05-10
          • 1970-01-01
          • 2020-03-31
          • 1970-01-01
          相关资源
          最近更新 更多