需要 pymongo 数据帧输出为多行
Posted
技术标签:
【中文标题】需要 pymongo 数据帧输出为多行【英文标题】:Need pymongo data frame output as multiple rows 【发布时间】:2022-01-19 08:38:38 【问题描述】:这是我在 MongoDB 数据源中的 JSON 输入。
"_id" : ObjectId("61b84ae8e831076431a67f9e"),
"nameId" : "A123R3",
"__v" : NumberInt(0),
"createdAt" : ISODate("2021-12-14T07:42:31.764+0000"),
"data" : [
"sources" : [],
"_id" : ObjectId("61b84ae7abea48f85c97e37e"),
"inputImage" : "URL1",
"outputImage" : "URL2",
"timeTracks" :
"main" :
"total" : 2.993,
"actualTotal" : 2.993
,
"source" : "ui"
,
"sources" : [],
"_id" : ObjectId("61b84ae8c7dc60f88356bf97"),
"inputImage" : "URL3",
"outputImage" : "URL4",
"timeTracks" :
"main" :
"total" : 3.283,
"actualTotal" : 3.28
,
"source" : "ui"
,
],
"updatedAt" : ISODate("2021-12-14T07:42:32.082+0000")
我有上面的 json 作为我的输入和
我需要一个像下面这样的python输出数据框,在此先感谢
【问题讨论】:
能否将您的 json 记录转换为 python dict,否则我们无法转换ObjectId
和 ISODate
。
@Corralien 不知道将我的 JSON 转换为 python 字典。忽略那个 Objectid。
【参考方案1】:
建议 - 在您的 mongo "$project"
查询中,添加 "_id": 0
并使用 "$dateToString"
将 ISO 日期转换为字符串格式。之后,您可以按照以下方式进行操作。
data =
"nameId" : "A123R3",
"createdAt" :"2021-12-14",
"data" : [
"sources" : [],
"inputImage" : "URL1",
"outputImage" : "URL2",
"timeTracks" :
"main" :
"total" : 2.993,
"actualTotal" : 2.993
,
"source" : "ui"
,
"sources" : [],
"inputImage" : "URL3",
"outputImage" : "URL4",
"timeTracks" :
"main" :
"total" : 3.283,
"actualTotal" : 3.28
,
"source" : "ui"
,
],
"updatedAt" : "2021-12-14"
import pandas as pd
df = pd.json_normalize(data, record_path=['data'], meta=['nameId','createdAt','updatedAt'], errors='ignore')
sources inputImage outputImage source timeTracks.main.total timeTracks.main.actualTotal nameId createdAt updatedAt
0 [] URL1 URL2 ui 2.993 2.993 A123R3 2021-12-14 2021-12-14
1 [] URL3 URL4 ui 3.283 3.280 A123R3 2021-12-14 2021-12-14
【讨论】:
以上是关于需要 pymongo 数据帧输出为多行的主要内容,如果未能解决你的问题,请参考以下文章
python代码实现:视频转换终端字符,输出字符代码视频(python实现输出多行刷新)
如何从单个 JSON(IOT HUB)将流分析输出转换为多行