赞
踩
要求:将如下表格转换成
除了最后一行其他行都是一个object把这个object保存到一个object数组
即除了最后一行,前面所有行都视作一个object数组,看成一个value,并把key值设置成“result”
最后一行 两两一组为一个k-v字典
最后形成的json结构如下图:
解决代码如下:
#导入库
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import json#导入数据
pd.set_option('display.unicode.east_asian_width',True)
file_location ="C:\\Users\\lyj\\Documents\\WeChat Files\\wxid_otevjwiw432222\\FileStorage\\File\\2022-12\\老线时间调度表.xlsx"
df=pd.read_excel(file_location)#删除掉多导入的一列(其他代码不一定有这个步骤)
df1=df.drop(['Unnamed: 0'],axis = 1)
#将最后一行拿出来 去除掉空格 两两分成多个k-v值
array1 = np.array(df1) # 将df转换为list对象
list1 = array1.tolist() # 将array转换为list
list1 = list1[-1] # 获取最后一行的数据
df1.drop([len(df1)-1], inplace=True) # 删除df的最后一行多余的数据list1 = [x.strip() for x in list1 if x.strip()!=''] #去掉list1中的空格数据
arr = np.array(list1).reshape((int)(len(list1)/2), 2) #将list1转换成 一行两列的数组
list2=arr.tolist() # 然后再转换会list 里面存储的数组#将df转置后转换成字典然后获取器value值,保存进数组object
dict3=df1.T.to_dict()
object=[]
for v in dict3.values():
object.append(v)#最后在list2里面加个k-v值数组
list2.append(["result",object])
#直接对list转字典再转json
dict_zip=dict(list2)
j1 = json.dumps(dict_zip, ensure_ascii = False, indent = 2)
print(j1)
在导入数据时发现dataframe多导入一列,所以代码里面有需要去掉一列
最后转换json时一定要把list2形成如下k-v的格式(这里的k-v(用一个数组存储的),5组k-v就是5个数组保存进list2),然后直接转字典就成目标json了
注意:!直接转字典生成的 是单引号 必须 使用json.dumps方法才能将单引号转换成双引号
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。