如何在熊猫数据框中读取 mongodb 导出的 Json
Posted
技术标签:
【中文标题】如何在熊猫数据框中读取 mongodb 导出的 Json【英文标题】:How to read mongodb exported Json in pandas dataframe 【发布时间】:2019-04-13 06:57:37 【问题描述】:我正在使用以下代码从 mongoDB 查询中导出 json:
querywith open(r'/Month/Applications_test.json', 'w') as f:
for x in dic:
json.dump(x, f, default=json_util.default)
运行良好并返回以下 json:
"_class": "Application",
"_id": "123",
"applicationTimeStamp":
"$date": 1541466008000
,
"createdDateTime":
"$date": 1541466008084
"_class": "Application",
"_id": "124",
"applicationTimeStamp":
"$date": 1540080000000
,
"createdDateTime":
"$date": 1540080000096
"_class": "Application",
"_id": "125",
"applicationTimeStamp":
"$date": 1540080000000
,
"createdDateTime":
"$date": 1540080000097
我正在使用以下 pandas 代码来尝试阅读它:
data_df = pd.read_json(r'/Month/Applications_test.json', lines = True)
我收到以下错误:
ValueError: Unexpected character found when decoding array value (2)
我想要的是一个熊猫数据框:
_class | _id | applicationTimeStamp | createdDateTime
Application | 123 | 10/07/2018 | 10/07/2018
Application | 124 | 10/07/2018 | 10/07/2018
Application | 125 | 10/07/2018 | 10/07/2018
如何将上面的 json 读入 pandas 数据帧?
谢谢!
【问题讨论】:
您能粘贴一个您正在使用的文件中包含的数据的小示例吗?或者更好的是,使用StringIO
重现您遇到的错误。比我更熟悉这个的人可能在没有看到你的数据的情况下知道解决方案,但发布它不会有坏处
对不起,我不明白你对数据的意思?文件中的数据就是上面贴出来的json
您上面发布的数据是代码的输出,而不是实际数据,因此我无法运行您提供的代码并重现您遇到的错误。可重现代码块的示例是 json_string = StringIO(''' "name":"John", "age":100''') pd.read_json(json_string, lines=True)
这不会重现错误,但我不确定您的文件是什么样子才能重现错误。
【参考方案1】:
你必须以这种方式使用read_json:
df = pd.read_json(path_or_buf="file_path\json.txt", typ='frame')
它返回一个数据框,如:
_class _id applicationTimeStamp createdDateTime
$date Application 123 1541466008000 1541466008084
或:
_class ... createdDateTime
0 Application ... '$date': 1541466008084
1 Application ... '$date': 1540080000096
2 Application ... '$date': 1540000000097
然后你可以转换时间戳。
【讨论】:
以上是关于如何在熊猫数据框中读取 mongodb 导出的 Json的主要内容,如果未能解决你的问题,请参考以下文章