python - 使用 Python 为 SAS 数据集生成 JSON 文件
问题描述
我的输入数据是 SAS 数据集,样本数据
编号 b'401200262' 政策编号 746346 出生 1960-09-23 00:00:00 家庭儿童 0 杨洋 收入 NaN PARENT1 b'否' HOME_VAL 252896 MSTATUS b'是' 性别 b'M' 教育b'Bachelors' 政策 2 URBANICITY b'高度城市化/城市化' AGE_BAND b'51 - 65' CREDIT_SCORE_BAND b'750 +' 童车 0 开始 1988-05-12 00:00:00 PLCY日期 2001-04-07 00:00:00 第1554章 CLM_FREQ 5 已撤销 b'No' MVR_PTS 1 CLM_AMT 0 CLM_DATE NaT CLAIM_FLAG 0 州 b'IL' TRAVTIME 14.472 CAR_USE b'商业' 蓝皮书 28560 CAR_TYPE b'面板卡车' RED_CAR 是的 车龄 10 TIF 104 职业b'专业' 2001年PLC年 CLM_EXPOSURE 1 LN_CLM_EXPOSURE 0 CUST_LOYALTY 12.9024 BLUEBOOK_1000 28.56
我正在尝试为以下示例中的特定记录生成 REST API JSON 格式,我选择了第二行:
import pandas as pd
sasdt = pd.read_sas("c:\hmeq.sas7bdat")
dfs = [] # holds data chunks
dfs2=sasdt.loc[2]
for chunk in sasdt:
print('{"name":"',chunk,'_","value":',)
我无法生成我想要的这样的输出:你能帮我吗?
解决方案
试试这个:
import pandas as pd
import numpy
import json
sasdt = pd.read_sas('airline.sas7bdat')
dfs2 = sasdt.loc[2]
# avoid json.dumps raise "TypeError: Object of type 'int64' is not JSON serializable"
dfs2_values = [int(i) if type(i) == numpy.int64 else i for i in dfs2]
inputs = pd.DataFrame({'name':dfs2.index.to_list(), 'value':dfs2_values}).to_dict(orient='records')
json.dumps({'inputs':inputs})
你会得到这样的输出:
'{"inputs": [{"name": "YEAR", "value": 1950.0}, {"name": "Y", "value": 1.569000005722046}, {"name": "W", "value": 0.27799999713897705}, {"name": "R", "value": 0.3156999945640564}, {"name": "L", "value": 1.3880000114440918}, {"name": "K", "value": 0.5730000138282776}]}'
推荐阅读
- sql - Oracle Select SQL中N行类似类型后如何创建批号?
- javascript - 如何用打字稿接口映射json?
- mysql - 更新某些行时忽略唯一键(mariaDB)
- mysql - MySQL SELECT / GROUP BY losing NULLs
- java - 尝试 catch 将我的变量重置为原始值,即使它是全局变量
- java - 发现多个 ejb 的接口类型为用于绑定
- ruby - 如何在 Windows 上的 ruby 中修复 (RubyInstaller::Runtime::DllDirectory::WinApiError)?
- python - 在 python 3.7 中使用 exec() 导入别名不起作用
- ruby-on-rails - 通过细化添加的方法在 Rails 控制器中不可见
- tensorflow - Keras 损失为负,准确率下降,但预测良好?