python - 如何pandas解析之前保存的json

标签 python json pandas

我已将 pandas 数据帧保存到 csv 中,并将其读回。但我观察到 json 数据变成如下所示:

"[{u'f1': 1000, u'f2': 500}]"

我注意到使用json.loads不起作用。有谁可以帮忙回答一下原因

  1. 它已将 u 放在每个字段名称的前面
  2. 引号被交换了,因为我进行了实验,发现只有 json.loads('[{"f1": 1000}]') 有效,而 json.loads("[ {'f1': 1000}]") 也不是 json.loads('[{"f1": 1000}]')

最佳答案

这不是 JSON。这是 Python 2 文字语法。

您可以使用 ast.literal_eval() function 将其作为 Python 文字再次加载。 :

>>> import ast
>>> ast.literal_eval("[{u'f1': 1000, u'f2': 500}]")
[{u'f1': 1000, u'f2': 500}]

给你一个Python列表,其中有一个字典;每个键都是一个 unicode 字符串对象;因为这些键仅使用 ASCII 字符,所以您也可以使用常规字符串作为键来解决这些问题:

>>> result = ast.literal_eval("[{u'f1': 1000, u'f2': 500}]")
>>> result[0]
{u'f1': 1000, u'f2': 500}
>>> result[0]['f1']
1000

JSON 将在字符串前使用双引号且不带前缀,而 Python unicode 字符串对象可以使用 '" (具体取决于内容)并具有 u 前缀。还有其他差异;Python 使用 TrueFalse,JSON 将它们小写为 true false,Python 中的 None 是 JSON 中的 null

关于python - 如何pandas解析之前保存的json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32444650/

相关文章:

python - 绘制按 id 分组的时间序列

Python 二十一点 UnboundLocalError

python - 使用 swig 包装自定义哈希表

python - 如何解决python2.7中的名称错误

javascript - 在没有 node.js 的情况下写入 .json 文件

python-2.7 - 将 2D numpy.ndarray 转换为 pandas.DataFrame

python - numpy.disutils.system_info.NotFoundError : no lapack/blas resources found

java - 拆分从android发送到php的嵌套数组

javascript - 将 javascript 变量保存到 JSON 文件

python - 如何根据条件替换数据框的值