python - 将 JSON 读入 Python/Pandas - 获取 JSONDecodeError

标签 python json python-3.x pandas dictionary

我的数据在 json 中包含几列,但我需要将每一列转换为 Pandas 数据框中的多列(因此每个新列都是一个键,每一行都是与该行关联的值) )。

我创建了这个函数:

def convert_json_columns(df):
    cat_df = df['category'].apply(json.loads)
    cat_df = pd.DataFrame(cat_df.tolist()).add_prefix('category_')
    return pd.merge(df, cat_df, left_index=True, right_index=True, how='outer')

它适用于 2/5 列,但 json.loads() 给我正在转换的其他列抛出了一个错误,说它需要一个 ',':

JSONDecodeError: Expecting ',' delimiter: line 1 column 30 (char 29)

我想我应该尝试手动将此列转换为字典,因为 json 似乎有效(我将其粘贴到此工具 here 中,它说它是有效的代码)。我无法将其粘贴到此处,因为它包含个人信息。

所以我尝试通过将“null”替换为“None”来将其转换为Python字典,其他所有内容似乎都应该转换得很好。完成后,我可以很容易地将字符串转换为字典。例如:

来自:

{"id":101531536,"name":null,"is_registered":null,"chosen_currency":null}

至:

{"id":101531536,"name":None,"is_registered":None,"chosen_currency":None}

但是,我随后意识到字符串中有一个值带有双引号,并且每个值都使用双引号。即:

test_dict = {"id":1635201695,"name":"John "Cowboy" Smith"} ##fake name

所以我有两个问题:

  • 有没有办法只将该字符串中的值内的双引号转换为单引号,以便随后将其转换为字典?
  • 值字符串中的双引号可能是导致 json 错误的原因吗?我对 python 很陌生,对 json 完全陌生

最佳答案

不确定这是否是 JSON 问题的原因,但您可以轻松地将双引号替换为 pandas 中的单引号,如下所示:

df["列名"] = df["列名"].str.replace('"', "'")

关于python - 将 JSON 读入 Python/Pandas - 获取 JSONDecodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54798562/

相关文章:

python - 为什么程序会计算一个额外的值(循环 "while")?

python - 导入和使用使用多处理的模块,而不会在 Windows 上导致无限循环

php - jQuery AJAX 函数 - 数据未传递

Python 3,urllib POST 提交

python - 在Excel中插入日期公式得到#name?用python插入后出错

python - 使用 python3 从 urllib 解码字节,有更好的方法吗?

python - 如何使用 PyQt4 禁用窗口最大化图标?

python - 有人可以解释这个 log_normal_pdf 术语对 tensorflow VAE 演示代码的含义吗?

python - 在 Python 中导入 JSON

ios - self.tableView.reloadData() 在 Swift 中不起作用