Python 将嵌套的mongo db文档转换为dataframe

Python 将嵌套的mongo db文档转换为dataframe,python,json,pandas,dictionary,json-normalize,Python,Json,Pandas,Dictionary,Json Normalize,我有一个mongoDB集合,里面有这样的文档 doc = { "_id": { "$oid": "516622c9ce21150200000d87" }, "SubmissionDate": { "$date": "2013-04-11T02:41:13.162Z" }, "isComplete": True, &q

我有一个mongoDB集合,里面有这样的文档

doc = {
  "_id": {
    "$oid": "516622c9ce21150200000d87"
  },
  "SubmissionDate": {
    "$date": "2013-04-11T02:41:13.162Z"
  },
  "isComplete": True,

  "Rounds": [
    {
      "Photo": [
        
      ],
      "A": {
        "Complexity": 55,
        "Colour": 85,
        "Deep": 51,
        "Effervescence": 44
      },
      "B": {
        "QualityPIDs": [
          
        ],
        "QualityScales": [
          
        ],
        "Complexity": 43,
        "Qualities": [
          
        ]
      },
      "C": {
        "QualityPIDs": [
          
        ],
        "QualityScales": [
          
        ],
        "Complexity": 60,
        "UHS": 46,
        "Colour": 33,
        "Qualities": [
          
        ]
      },
      "D": {
        "Complexity": 73,
        "Duration": 68,
        "Quality": 65
      }
    }
  ],
  "Item": {
    "_id": {
      "$oid": "51e6d678c06918db21156f92"
    },
    "Country": "Australia",
    "Name": "King",
    "PeopleId": {
      "$oid": "51dddb69a9d9350200000"
    },
    "Style": "Apple",
    "Type": "Flat",
    "UserSubmitted": False
  }
}
我需要将此集合转换为熊猫数据帧

这里建议的解决方案 做主要工作。但我还是有 在这一列中插入一组词典

我做了一组循环以访问循环的子字典

最后,我将一个_数据连接到我的主数据框

有没有更快的方法?现在循环需要很多时间。谢谢大家!

  • 可以使用
    mata
    参数指定
    dict
    的每个级别,并对
    记录路径使用
    'Rounds'
将熊猫作为pd导入
meta=[''id','$oid'],
[‘项目’、‘国家’],
['Item','Name'],
['Item','Style'],
['Item','Type'],
['Item','UserSubmitted'],
['Item'、'u id'、'$oid'],
['Item','PeopleId','$oid'],
['SubmissionDate','$date'],
“isComplete”]
df=pd.json\u规范化(doc,record\u path='Rounds',meta=meta)
#显示(df)
照片A.复杂度A.颜色A.深A.气泡B.质量B.质量等级B.复杂度B.质量C.质量C.质量等级C.复杂度C.超高S.颜色C.质量D.复杂度D.持续时间D.质量id.$oid项目.国家项目.名称项目.样式项目.类型项目.用户提交的项目.\U id.$oidItem.PeopleId.$oid SubmissionDate.$date已完成
0    []            55        85      51               44            []              []            43          []            []              []            60     46        33          []73 68 65 516622c9ce21150200000d87澳大利亚金苹果平板假51e6d678c06918db21156f92 51dddb69a9d9350200000 2013-04-11T02:41:13.162Z真

谢谢!你的解决方案非常有效,我不知道这个参数。很抱歉延迟了我的反馈。感谢您的时间和帮助!
df = pd.json_normalize(doc)

A_data = pd.DataFrame(columns=df.Rounds[0][0]['A'].keys())
for i in range(len(df.Rounds)):
    A_data = A_data.append(pd.json_normalize(df.Rounds[0][0]['A']), ignore_index=True)