使用pandas将excel转成json格式

1.Excel数据

使用pandas将excel转成json格式_第1张图片

2.我们想要的JSON格式

{
    "0": {
        "raw_data1": "Sam",
        "raw_data2": "Wong",
        "raw_data3": "Good",
        "layer": "12v1"
    },
    "1": {
        "raw_data1": "Lucy",
        "raw_data2": "Babe",
        "raw_data3": "Pho",
        "layer": "12v2"
    }
}

3.python实现

  • 用anaconda创建一个独立的python环境
(base)...$ conda create -n excel
  • 切换到excel环境下,默认是在base环境:
(base)...$ conda activate excel
(excel)...$
  • 安装pandas
(excel)...$ conda install pandas

安装好后,pandas会被放在excel的环境里,其他的环境不受影响。

  • 查看当前环境的依赖
(excel)...$ conda list

打开visual studio code,设置python环境

我们这里使用vs code来开发,设置python环境就是选择我们刚刚创建出来的环境,因为只有里面有我们想要用到的依赖,具体设置如下:

点击vs code如下位置,打开设置:
使用pandas将excel转成json格式_第2张图片

  • 在弹出来的选项中选择我们刚刚创建的环境就可以完成配置
    使用pandas将excel转成json格式_第3张图片

  • python 代码实现

import pandas as pd
# read excel
xls = pd.read_excel('~/Desktop/Book1.xlsx')
xls.to_json(path_or_buf='book.json', orient='index')

结果如下:
使用pandas将excel转成json格式_第4张图片

  • 上面的数据看起来没有那么好看,其实可以格式化一下,python代码实现:
# 导入pandas库
import pandas as pd
# 导入json库的两个工具loads将字符器转成json对象,dumps工具用于格式化
from json import loads,dumps
# 读取excel的数据
xls = pd.read_excel('~/Desktop/Book1.xlsx')
# 将excel数据转成json字符串
json_str = xls.to_json(orient='index')
# 将json字符器转成json对象
parsed = loads(json_str)
# 格式化json对象,所谓格式化就是有缩进换行等格式化的东西
format_data = dumps(parsed,indent=4)
# 将格式化后的数据写入book.json文件
with open('book.json','w') as f:
    f.write(format_data)

结果是这样的:
使用pandas将excel转成json格式_第5张图片

我们还可以对获得的数据做更多的处理,比如我想将0,1这两个key换成对应的12v1和12v2,那么代码可以这么来写:

import pandas as pd
from json import loads,dumps

xls = pd.read_excel('~/Desktop/Book1.xlsx')
json_str = xls.to_json(orient='index')
parsed = loads(json_str)
# 与上面的程序比,区别只在这里,在格式化前对数据进行修改
# 创建一个字典,相当于java中的Map
dict = {}
# 遍历数据,对数据进行修改,修改后的数据都放在dict里
for key in parsed:
    k = parsed[key]['layer']
    dict[k] = parsed[key]
# 对修改后的数据dict进行格式化
format_data = dumps(dict,indent=4)
# 将格式化后的数据写入文件
with open('book.json','w') as f:
    f.write(format_data)

结果如下:
使用pandas将excel转成json格式_第6张图片

你可能感兴趣的:(Python,pandas,excel,json)