首页 > 解决方案 > 如何从 python 中的数据创建 .csv 或 .xlsx 文件

问题描述

[
    {
        "name":"Iphone XR",
        "price" :"$500",
        "Reviews":{"user":{"Name":"mr.Y","id":122145,"review":'Wow'},
                   "user2":{"Name":"mr.Z","id":545145,"review":'Wow 1'},
                    "user3":{"Name":"mr.A","id":541274,"review":'Wow 2'},}
    },
    {
        "name":"Iphone 13",
        "price" :"$1500",
        "Reviews":{"user1":{"Name":"mr.S","id":5435632,"review":'Wow11'},
                   "user2":{"Name":"mr.F","id":546645,"review":'Wow22'},
                    "user3":{"Name":"mr.G","id":255863,"review":'Wow33'},}
    },
]

我正在使用python。我有这个数据。如何获得漂亮的 excel 或任何像 excel 这样的输出。

我不太擅长程序。输出像这样:

No.  P-name  price  Reviews  Name  id  review     Name  id  review

1    Ipho..  $500            Name  4.. Good Phone Mr.. .... ......
2 
................................................

我正在使用熊猫,但我没有得到相同的结果。对此数据的任何建议或解决方案。

标签: pythonexcelpandasdataframecsv

解决方案


这段代码应该可以完成这项工作:

import pandas as pd
import json

json1 = """
[
    {
        "name":"Iphone XR",
        "price" :"$500",
        "Reviews":{"user":{"Name":"mr.Y","id":122145,"review":'Wow'},
                   "user2":{"Name":"mr.Z","id":545145,"review":'Wow 1'},
                    "user3":{"Name":"mr.A","id":541274,"review":'Wow 2'}}
    },
    {
        "name":"Iphone 13",
        "price" :"$1500",
        "Reviews":{"user1":{"Name":"mr.S","id":5435632,"review":'Wow11'},
                   "user2":{"Name":"mr.F","id":546645,"review":'Wow22'},
                    "user3":{"Name":"mr.G","id":255863,"review":'Wow33'}}
    }
]
"""



json1 = json1.replace("'", '"')

response = json.loads(json1)

pd.DataFrame.from_dict(response)

reviews = ''

res = pd.DataFrame()
for _, review in pd.DataFrame.from_dict(response).iterrows():

    item, price, reviews = review

    items = reviews.items()

    aux1 = pd.DataFrame( [ i for i, j in items ], columns=['User']  )\
        .merge(pd.DataFrame( [ j for i, j in items ] ), left_index=True, right_index=True, how='inner')

    index = [(i, item, price) for i in range(len(aux1))]
    aux1.index = pd.Index(index)

    if res.empty:
        res = aux1.copy()
    else:
        res = res.append(aux1, ignore_index=False, sort=False)

res.to_excel(r'path/to/ouput/your/excel.xlsx')

推荐阅读