Pandas操作Excel表格---初级操作

读取表格

import pandas as pd

def get_excel_info(path, sheet="Sheet1", field="index", cols=[]):
    """
    :param path: 文件地址
    :param sheet: 选择要读取的分页名字,默认是Sheet1
    :param field: 值的下标字段
    :param cols: 选择读取的标题名
    :return: 带下标的json返回值
    """
    data = pd.read_excel(path, sheet_name=sheet, header=0, keep_default_na=False, usecols=cols)
    data = eval(data.to_json(orient="index", force_ascii=False))
    data1 = list(data.values())
    data2 = list(data)

    for i in range(len(data1)):
        data1[i][field] = data2[i]

    return data1

修改表格具体值

import openpyxl
    
def put(self):
        req = reqparse.RequestParser()
        req.add_argument("index")  # 下标
        req.add_argument("name")
        req.add_argument("yitu", default="{}")
        args = req.parse_args()

        for i in eval(args["yitu"]).values():
            value = str(i)

        index = int(args["index"]) + 2

        data = pd.read_excel(f"path/tasks/{args['name']}", header=0, keep_default_na=False)
        data_index = data.columns.get_loc("意图") # 获取具体标题的下标

        workbook = openpyxl.load_workbook(f"path/tasks/{args['name']}")
        worksheet = workbook["Sheet1"]

        worksheet.cell(row=index, column=data_index + 1).value = value
        workbook.save(f"path/tasks/{args['name']}")

        return jsonify({"code": 20000, "message": "ok"})

增加新值

pandas增加新值,会直接覆盖原文件数据,新建表格

def post(self):
        req = reqparse.RequestParser()
        req.add_argument("name")  # 文件名
        args = req.parse_args()

        data = get_excel_info(f"path/tasks/{args['name']}", cols=["groupid", "状态"])

        data = pd.DataFrame(data)

        # 循环迭代数据行并添加到工作表中
        res = [{"phone_id": x["groupid"].to_list(),
                "状态": x["状态"].to_list()} for k, x in
               data.groupby("groupid")]

        output_data = [{'phone_id': data['phone_id'][i],
                        '状态': data['状态'][i]} for data in res for i in
                       range(len(data['phone_id']))]

        df = pd.DataFrame(output_data)
        df = df.drop_duplicates(subset="phone_id", keep="first")  # 去重
        df.to_excel("path/handle/借款失败进度.xlsx", index=False)

openpyxl不会覆盖原数据,是在原有值的基础上追加数据

def add_to_data(ex_path_name, data, sheetname):
    """
    :param ex_path_name: 文件地址
    :param data: [[1, 2, 3], [4, 5, 6]]
    :param sheetname: 分页名
    :return:
    """

    wb = openpyxl.load_workbook(ex_path_name)
    ws = wb[sheetname]

    for x in data:
        ws.append(x)

    wb.save(ex_path_name)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值