添加scrip以将python结果从json导出到excel或csv文件

添加scrip以将python结果从json导出到excel或csv文件,python,json,csv,Python,Json,Csv,我是Python世界的新手,所以向您道歉。我正在研究从API下载的一组时间序列。这些数据已打印为JSON文件(如下面的代码所示)。但是,如何将这些数据从JSON转换为EXCEL或CSV 下面是我使用的: 导入请求 有效载荷=“{\'startDate\':20190930,\'endDate\':20191018,\'tags\':[\'PAYMENT.repensation.1Y.BLOOMBERG\']} 标题={ “内容类型”:“应用程序/json”, “接受”:“应用程序/json”,

我是Python世界的新手,所以向您道歉。我正在研究从API下载的一组时间序列。这些数据已打印为JSON文件(如下面的代码所示)。但是,如何将这些数据从JSON转换为EXCEL或CSV

下面是我使用的:

导入请求
有效载荷=“{\'startDate\':20190930,\'endDate\':20191018,\'tags\':[\'PAYMENT.repensation.1Y.BLOOMBERG\']}
标题={
“内容类型”:“应用程序/json”,
“接受”:“应用程序/json”,
“授权”:“持票人AaikownMNGVJMZCTYTG5MC00YJHILWE4MTNME4ZDUZMZU1OWVLGUDSIR”
}
proxyDict={“http”:http://webproxy.payment.nsroot.net:8080/,“https”:http://payment.nsroot.net:8080/"}
r=请求.发布(url=”https://payment.com/data?client_id=9cf4ec37-a890-4b8b-a811-6a8d533559ee”,数据=有效载荷,标题=标题,代理=代理)
打印(r.json())
下面是上述代码提供的结果。

{'frequency':'DAILY','body':{'PAYMENT.repensation.1Y.BLOOMBERG':{'x':[20190930、20191001、20191002、20191003、20191004、20191007、20191008、20191009、20191010、20191011、20191014、20191015、20191016、20191017、20191018],'c:[[60.0392,60.0391,60.0391,60.0391,60.0391,60.0391,60.0391,60.0391,60.0391,60.0391,60.0391,60.039,60.039,60.039,60.039][1],“类型”:“系列”},“状态”:“正常”}

您能告诉我如何将其转换为csv文件吗?其中A列是(yyyymmdd)中的日期,B列是如下所示的值

日期值 20190930 60.0392 ... ... 20191018 60.039

多谢各位

result = list(zip(test['body']['PAYMENT.REIMBURSEMENT.1Y.BLOOMBERG']['x'], test['body']['PAYMENT.REIMBURSEMENT.1Y.BLOOMBERG']['c']))

import csv
with open('PAYMENT.REIMBURSEMENT.1Y.BLOOMBERG', 'w', newline='') as csvfile:
    fieldnames = ['Date', 'values']
    writer = csv.writer(csvfile, delimiter=',',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(fieldnames)
    for row in result:
        writer.writerow(row)
如果需要转换为具有工作表名称的excel,请使用以下代码

import pandas as pd

df = pd.DataFrame(result, columns=['Date', 'values'])

df.to_excel('file.xlsx', sheet_name='PAYMENT.REIMBURSEMENT.1Y.BLOOMBERG', index=False)
如果需要转换为具有工作表名称的excel,请使用以下代码

import pandas as pd

df = pd.DataFrame(result, columns=['Date', 'values'])

df.to_excel('file.xlsx', sheet_name='PAYMENT.REIMBURSEMENT.1Y.BLOOMBERG', index=False)

首先创建一个指向桌面的路径,并将其置于常量中(通常用大写字母表示):

迭代json正文中的键和值,根据您的请求,键用作文件名,这就是为什么它以该名称保存在变量中,而值是保存csv数据的字典:

for file_name, data in r.json()['body']:
    csv_rows = '\n'.join(','.join(values) for values in zip(*data.values()))
    (DESKTOP_PATH / filename).write_text(f'{",".join(data.keys())}\n{csv_rows}')
在for循环中,我们构建了对应于每个文件的csv:
zip(*data.values())
将值列表转换为迭代器,该列表以
[column\u a\u values,column\u b\u values,…][/code>的形式保存列表,将所有元素组合在同一行上。即
list(zip(*[1,2,3],[4,5,6],[7,8,9]))
等于
[[1,4,7],[2,5,8],[3,6,9]]

然后,我们使用“
”,“,用逗号将行中的所有值连接起来。连接(值)
,并使用“
”\n”将行之间的新行连接起来。连接(…)


最后,我们在桌面路径和
desktop\u path/filename
给出的文件名的串联中使用write_text一次性写入所有文本,最后的文本由
f'{,“.join(data.keys())}\n{csv_rows}给出“
首先输出列名,然后输出上面计算的行。

首先创建一个指向桌面的路径,并将其放入常量中(通常用大写字母表示):

迭代json正文中的键和值,根据您的请求,键用作文件名,这就是为什么它以该名称保存在变量中,而值是保存csv数据的字典:

for file_name, data in r.json()['body']:
    csv_rows = '\n'.join(','.join(values) for values in zip(*data.values()))
    (DESKTOP_PATH / filename).write_text(f'{",".join(data.keys())}\n{csv_rows}')
在for循环中,我们构建了对应于每个文件的csv:
zip(*data.values())
将值列表转换为迭代器,该列表以
[column\u a\u values,column\u b\u values,…][/code>的形式保存列表,将所有元素组合在同一行上。即
list(zip(*[1,2,3],[4,5,6],[7,8,9]))
等于
[[1,4,7],[2,5,8],[3,6,9]]

然后,我们使用“
”,“,用逗号将行中的所有值连接起来。连接(值)
,并使用“
”\n”将行之间的新行连接起来。连接(…)


最后,我们在桌面路径和
desktop\u path/filename
给出的文件名的串联中使用write_text一次性写入所有文本,最后的文本由
f'{,“.join(data.keys())}\n{csv_rows}给出“
首先输出列名,然后是上面计算的行。

请共享返回的JSON和所需CSV数据的示例。嗨@balderman,下面是打印结果。{'frequency':'DAILY','body':{'PAYMENT.repensation.1Y.BLOOMBERG':{'x':[20190930、20191001、20191002、20191003、20191004、20191007、20191008、20191009、20191010、20191011、20191014、20191015、20191016、20191017、20191018],“c”:[37.5601、37.5601、37.5602、37.5601、37.5601、37.56、37.56、37.56、37.5599、37.5599、37.5598、37.5597],“类型:”“系列”;“状态:”“OK”}对于CSV文件,我正在考虑将其保存为如下格式:a列(日期)、B列(值)工作表名为PAYMENT.repribution.1Y.BLOOMBERGHi All,我已经更新了我的问题,这样大家都会更清楚。希望您的好意。请分享返回的JSON和所需CSV数据的示例。您好@balderman,以下是打印结果。{'frequency':'DAILY','body':{'PAYMENT.repribution.1Y.BLOOMBERG':{'x':[20190930、20191001、20191002、20191003、20191004、20191007、20191008、20191009、20191010、20191011、20191014、20191015、20191016、20191017、20191018],“c”:[37.5601、37.5601、37.5602、37.5601、37.5601、37.56、37.56、37.56、37.5599、37.5599、37.5598、37.5597],“类型:”“系列”;“状态:”“OK”}对于CSV文件,我正在考虑将其保存为一种格式,如:a列(日期)、B列(值),表名为PAYMENT.repensation.1Y.Bloombergghi。总之,我已经更新了我的问题,这样大家都会更清楚。希望您的好意。纯代码的答案被认为是低质量的:确保提供一个解释,说明您的代码的作用