在pandas数据帧中阅读嵌套JSON时出现问题

24 浏览
0 Comments

在pandas数据帧中阅读嵌套JSON时出现问题

我对pandas和python都是新手,遇到了一些问题。我想将一个复杂的嵌套json文件加载到pandas dataframe中,我正在使用以下代码:\n

import json
import urllib.request
import pandas as pd
import numpy as np
from pandas.io.json import json_normalize
file_str = 'C:\\file.json'
with open(file_str, 'r', encoding="utf-8") as json_file:
   json_work = pd.read_json(json_file, typ='series', orient='columns')
for k, v in json_work.items():
    if v is None:
        json_work[k] = "N/A"
##df = pd.DataFrame.from_dict(json_work)
df = pd.io.json.json_normalize(json_work)
print(df)

\n按照这种写法,我得到了以下错误:\n

Traceback (most recent call last):
  File "C:/.....hack.py", line 18, in 
    df = pd.io.json.json_normalize(json_work)
  File "C:\Users\scoe\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\io\json.py", line 708, in json_normalize
    if any([isinstance(x, dict) for x in compat.itervalues(data[0])]):
  File "C:\Users\scoe\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\compat\__init__.py", line 175, in itervalues
    return iter(obj.values(**kw))
AttributeError: 'str' object has no attribute 'values'
如果我将这两行代码交换位置
df = pd.DataFrame.from_dict(json_work)
##df = pd.io.json.json_normalize(json_work)

\n进程会成功运行,但结果看起来不像一个dataframe。输出的显示如下:\n---- 上面有更多行,这只是输出中间的一部分示例 ----\nhrCenterName KW App Development & Maint\nhrSignatureLevel 1H\nhrSignatureLevelTitle Level 1 HR Signature Authority\nimName @\nimProvider N/A\n... ...\nprimaryOfficePhoneExtension N/A\n---- 下面还有更多行 ----\n\n我做错了什么?

0
0 Comments

有时候使用pandas读取嵌套的JSON数据时会遇到问题。下面是一个关于这个问题的解决方法。

问题出现的原因可能是JSON数据中存在嵌套的结构。默认情况下,pandas的read_json()函数只能读取扁平的JSON数据,即没有嵌套结构的数据。当尝试读取嵌套的JSON数据时,可能会出现解析错误或无法正确读取数据的情况。

解决方法如下:

首先,我们需要使用json库将JSON数据加载为Python对象。然后,我们可以使用pandas的json_normalize()函数将嵌套的JSON数据规范化为扁平的结构。这样我们就可以使用read_json()函数读取数据。

下面是解决该问题的示例代码:

import pandas as pd
import json
# 读取JSON数据
with open(path, 'r') as file:
    data = json.load(file)
# 将嵌套的JSON数据规范化为扁平的结构
normalized_data = pd.json_normalize(data)
# 使用pandas的read_json()函数读取数据
df = pd.read_json(normalized_data)

通过以上步骤,我们成功解决了读取嵌套的JSON数据的问题。现在,我们可以继续使用pandas的DataFrame来分析和操作这些数据了。

希望以上解决方法对于读取嵌套的JSON数据的问题有所帮助。

0
0 Comments

问题:在使用pandas读取嵌套JSON数据时遇到了困难。

原因:json_normalize()函数期望的参数是字典或字典列表。

解决方法:使用json.load()函数将JSON文件加载为Python对象,然后使用json_normalize()函数将其转换为DataFrame。

代码示例:

with open(file_str, 'r', encoding="utf-8") as json_file:
    json_work = json.load(json_file)
df = pd.io.json.json_normalize(json_work)

感谢这个解决方法,我将尝试一下。现在可以引用DataFrame中的数据了。当我打印整个DataFrame时显示的格式有些奇怪,但可能是PyCharm的设置问题。

另外,对我来说,实际上是使用了utf-8编码解决了问题,谢谢!

0