【问题标题】:Print a json following a specific pattern按照特定模式打印 json
【发布时间】:2022-01-08 21:06:07
【问题描述】:

我有一个这样的文件.csv

ID;Name;Sports
1;Mark;["Football", "Volleyball"]
2;Luuk;["Fencing"]
3;Carl;["Swimming", "Basketball"]

我的目标是在文件.json 上打印以下内容:

[
{
"ID": 1,
"Name": "Mark",
"Sports": ["Football", "Volleyball"]
}
,
{
"ID": 2,
"Name": "Luuk",
"Sports": ["Fencing"]
}
,
{
"ID": 3,
"Name": "Carl",
"Sports": ["Swimming", "Basketball"]
}
]

我生成列表的代码:

from ast import literal_eval
import pandas as pd

df = pd.read_csv("test.csv", sep=";", converters={'Sports': literal_eval})

columns = list(df.columns)

json = []
for i in range(len(df)):
    line = {}
    for j in range(len(columns)):
        line[columns[j]] = df.iloc[i, j]
    json.append(line)

如何以上述相同格式巧妙地打印我的列表?

【问题讨论】:

    标签: python json pandas


    【解决方案1】:

    使用DataFrame.to_json:

    from ast import literal_eval
    
    df = pd.read_csv("test.csv", sep=";", converters={'Sports': literal_eval})
    
    
    json = df.to_json(orient='records')
    print (json)
    [{"ID":1,"Name":"Mark","Sports":["Football","Volleyball"]},
     {"ID":2,"Name":"Luuk","Sports":["Fencing"]},
     {"ID":3,"Name":"Carl","Sports":["Swimming","Basketball"]}]
    

    编辑:如果需要创建json 文件使用DataFrame.to_dict

    from ast import literal_eval
    
    df = pd.read_csv("test.csv", sep=";", converters={'Sports': literal_eval})
    
    d = df.to_dict(orient='records')
    print (d)
    [{"ID":1,"Name":"Mark","Sports":["Football","Volleyball"]},
     {"ID":2,"Name":"Luuk","Sports":["Fencing"]},
     {"ID":3,"Name":"Carl","Sports":["Swimming","Basketball"]}]
    
    import json
    with open('result.json', 'w') as fp:
        json.dump(d, fp)
    

    【讨论】:

    • 我的问题是关于如何以我在问题中报告的方式在文件.json 上打印
    • @LJG - 答案已编辑。
    • 它给了我一个错误:AttributeError: 'list' object has no attribute 'dump'
    • @LJG - 对我来说工作完美,可以升级 python 吗?
    • @LJG - 也许可以帮助this
    【解决方案2】:
    import json
    
    data = {"data" : []}
    
    for index, row in df.iterrows():
        data.append(row.to_dict())
    
    with open('data.json', 'w') as fp:
        json.dump(data, fp)
    

    【讨论】:

    • 'dict' 对象没有属性 'append'
    猜你喜欢
    • 2013-07-28
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 2021-12-11
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多