python - 如何将 json 列迭代到列,然后附加原始数据帧?

标签 python pandas

import pandas as pd
inp = [{'c1':10,'cols':{'c2':20,'c3':'str1'}, 'c4':'41'}, {'c1':11,'cols':{'c2':20,'c3':'str2'},'c4':'42'}, {'c1':12,'cols':{'c2':20,'c3':'str3'},'c4':'43'}]
df = pd.DataFrame(inp)
print (df)

df 是:

   c1  c4                      cols
0  10  41  {'c2': 20, 'c3': 'str1'}
1  11  42  {'c2': 20, 'c3': 'str2'}
2  12  43  {'c2': 20, 'c3': 'str3'}

cols 列是 JSON 类型。

我需要将 cols 列设置为 json_decode,这意味着将 df 更改为:

   c1    c4    c2      c3
0  10    41    20      str1
1  11    42    20      str2
2  12    43    20      str3

怎么做?
提前致谢!

最佳答案

使用pd.io.json.json_normalize

pd.io.json.json_normalize(inp)

输出

    c1  c4  cols.c2 cols.c3
0   10  41  20      str1
1   11  42  20      str2
2   12  43  20      str3

如果您有 pd.DataFrame,请使用 to_dict 转换回来

pd.io.json.json_normalize(df.to_dict('records'))

关于python - 如何将 json 列迭代到列,然后附加原始数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55281085/

相关文章:

csv - 如何从导入的 csv 文件中索引日期时间列 - pandas

python - 如何在 CSV 到 JSON 转换中保持浮点精度(通过 pandas.read_csv)?

python - 如何估计 Pandas 的 DataFrame 需要多少内存?

python - 将具有多个参数的函数传递给 DataFrame.apply

python - 从两行之间的 Pandas 数据框中提取行

python - 生成 3D 高斯数据

python - Curl 命令成功但 python 请求得到 403 Forbidden

python - 在 matplotlib 中使用动画的颜色图问题

c++ - Windows XP 到 Ubuntu Linux 点对点通信使用 Python 或 C/C++

python - GDCM python DICOM解压