javascript - 将 2d json(?) 数组转换为 pandas 数据框
问题描述
我使用 BeautifulSoup 从网站收集二维数据数组作为字符串。我相信表格格式与 json 格式有关,但是,当我尝试在字符串上应用 pandas.read_json() 时,它会给出一个值错误。我尝试将“nul”转换为“0”并从字符串中删除“\n”无济于事。
data_str = """[[{label:'column 1',type:'number'},{label:'column2',type:'number'},{label:'column 3',type:'number'}],
[205, null, 89748],
[206, null, 66813],
[235, 75, null],
[236, 138, null]]"""
我可以通过从数据条目中拆分包含列名的表的第一行来将字符串转换为 pandas DataFrame,但这似乎相当笨拙(见下文)。
import numpy as np
import pandas as pd
import ast
col_names, data_str = data_str.split('\n',1)
col_names = re.findall(r'label:\'(.*?)\'', col_names)
data_str = data_str.replace('\n','')
data_str = data_str.replace('null','0.')
data_arr = np.array(ast.literal_eval('[' + data_str))
data_df = pd.DataFrame(data_arr, columns = col_names)
有没有更 Pythonic 的方式将字符串转换为 pandas DataFrame?
解决方案
不,它不是有效的 JSON,而是作为原始字符串的 javascript 对象。您需要安装另一个模块,例如 demjson。有关更多详细信息,请参见此处的答案。
推荐阅读
- php - 如何在 php 扩展中获取请求标头
- python-3.x - 比较两个字典列表,如果键和值存在,则从列表中删除字典
- c++ - 概念约束模板函数调用的歧义
- firebase - Flutter、Redux 和 Firebase Auth Invalid argument(s) 错误
- jenkins - 如何从管道脚本触发远程作业
- java - Kafka Consumer 如何以及何时使用 Apache Camel 等 EIP 框架在 Kafka 中提交偏移量?我们如何使用 camel-kakfa 异步处理重试?
- ffmpeg - 如何组合两个 ffmpeg 命令
- python - Pandas groupby 对象唯一计数性能
- c# - Datatables插件从Web服务(.net)加载json数据错误
- windows - 加入域后如何查找CA服务器自动注册的windows证书