将多个Json文件连接到一个CSV中

ggazkfy8  于 2023-02-10  发布在  其他
关注(0)|答案(1)|浏览(106)

我有多个新的行分隔的JSON文件(他们是嵌套的),我需要加入到一个大的csv所有他们都有相同的模式(字段名)。
我已经阅读了几个关于扁平化嵌套然后追加它们的解决方案,但我需要在它们后面追加一个新列,说明信息来自哪个文件(表)。
表A有
| 第1栏|第2栏|
| - ------|- ------|
| 苹果|橙|
| 单元格3|单元4|
表B有
| 第1栏|第2栏|
| - ------|- ------|
| 沃尔玛|靶|
| 单元格3|单元4|
然后CSV会说
| 色谱柱A|B栏|C栏|
| - ------|- ------|- ------|
| 表1|苹果|橙|
| 表2|沃尔玛|靶|
我想创建的csv文件与不同的标题,如ID,日期,商店,产品,然后使用插入,但我不知道如何做到这一点,因为大多数的教程,我发现只转换成Pandasjson Dataframe 。
我试过使用pd.dataframe和normalize来尝试取消嵌套我的json文件,以便将其放入 Dataframe 中,但总是遇到问题。我不知道下一步该怎么办。我想这可能是因为我的json文件不是正确的json格式?我的json文件如下:

{
    "idA":{
         "property 1": "..."
         "property 2": "..."
         "property 3": [
                        {
                          "A" : "B",
                          "C" : "D"
                         }
                    ]
     },
    "idB":{
          .....
     }
}

把idA和idB想象成网址的id部分,真的很长。我是个新手,对这个有点不知所措,请帮帮忙:((

jogvjijk

jogvjijk1#

我认为您的问题需要更具体一点(即:你得到了什么作为一个错误或不希望的结果)。这样我们就可以帮助你解决那个特定的问题。
也就是说,我注意到您的Json文件不是一个字典列表,而是一个包含对象的字典,对象中包含信息,pd.json_normalize函数将在json文档的最外层字典列表上进行迭代,这可能不允许它正常工作。(您可以参考the function's docs以进一步理解此行为)
如果您的文档确实是一个包含所需信息的大字典,则可以使用for循环来访问字典中的信息,然后使用pd.DataFrame.from_dict()为了操纵PandasDF内的信息,然后为每次迭代添加列,将每个新的 Dataframe 附加到列表中,并使用pd.concat()来创建最终的df,如下所示:

df_list = []
for key in outer_dict:

    inside_dict = outer_dict[key]
    df = pd.DataFrame.from_dict(inside_dict)
    df['doc_name'] = key
    df_list.append[df]

最终_df = pd.concat(定义函数列表,轴=1)
对于包含字典属性之一的字典的列表,可以使用json_normalize()将其扁平化为df,甚至直接访问该属性并创建一个df,然后将其加入主df。
您也可以将不带键的dict内容保存到列表中,然后使用pd.read_json()阅读结果字符串:

dict_list = []
for key in outer_dict:

    inside_dict = outer_dict[key]
    dict_list.append[inside_dict]

json字符串=字符串(字典列表)pd.read_json(json字符串)
如果有帮助请告诉我。

相关问题