首页 > 解决方案 > 将 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?

标签: javascriptpythonpandas

解决方案


不,它不是有效的 JSON,而是作为原始字符串的 javascript 对象。您需要安装另一个模块,例如 demjson。有关更多详细信息,请参见此处的答案


推荐阅读