python - 导入json并将所有列转换为字符串

标签 python json python-3.x pandas

我正在尝试导入一个(非常)大的 json 文件(3.3m 行,1k 列),其中嵌套了多个嵌套 json。其中一些嵌套 json 是双重嵌套的。我找到了两种将 json 文件导入数据帧的方法,但是,我无法将导入的 json 展平并同时转换为字符串。

我使用的代码是:

# 1: Import directly and convert to string
def Data_IMP(path):
    with open(path) as Data:
        Data_IMP = pd.read_json(Data, dtype=str)

    Data_IMP = Data_IMP.replace("nan", "", regex=True)

    return Data_IMP

上面的问题是它没有完全扁平化 json 文件。

# 2: Import json and normalise
def Data_IMP(path):
    with open(path) as Data:
        d = json.load(Data)

    Data_IMP = json_normalize(d)
    return Data_IMP

上面的脚本压平了 json,但让 Python 决定每列的 dtype。

有没有办法结合这些方法,使 json 文件扁平化,并且所有列都读取字符串?

最佳答案

我找到了一个有效的解决方案,并且能够导入和展平 json,以及将所有文本转换为字符串。

# Function to import data from ARIC json file to dataframe

def Data_IMP(path):
    with open(path) as Data:
        d = json.load(Data)

    Data_IMP = json_normalize(d)
    return Data_IMP
# --------------------------------------------------------------------------------------------------------- #
# Function to cleanse Data file

def Data_Cleanse(Data_IMP):

    Data_Cleanse = Data_IMP.replace(np.nan, '', regex=True)
    Data_Cleanse = Data_Cleanse.astype(str)

    return Data_Cleanse

关于python - 导入json并将所有列转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59048841/

相关文章:

json - 将 `struct` 作为类型名称传递给函数参数

python - Pandas - 过滤列至少匹配一次的行

python - 过滤掉 pandas 中另一列 NaN 的许多行

Ubuntu 上的 python 卸载出错,apt-get 和 dpkg 损坏错误消息 1

python:解压缩 IBM 32 位 float

python - 使用 MySQL 和 Python 并发读写(不同进程)的问题

json - 在 Google Chrome DevTools 中搜索 JSON 对象

javascript - 如何从 JSON 中提取值

python - 如何避免 matplotlib.fill_ Between 和 where 之间的间隙

python - 使用Python删除不包含正则表达式匹配的单元格/行