Python-pandas 从excel中获取数据

# -*- coding: utf-8 -*-
__all__ = ["Analyse",
           "test"]

import pandas as pd
import os

class Analyse(object):
    def __init__(self, **kwargs):
        self.file = kwargs["file"]
        self.excel_data = pd.read_excel(io=self.file, sheet_name=None, header=None)

    def _get_sheet(self, **kwargs):
        sheet_name = kwargs["sheet_name"]
        return self.excel_data[sheet_name]

    def _get_table_data(self, **kwargs):
        """
        通过 表格名字 获取表格中的数据

        :param kwargs:
        :return:
        """
        table = kwargs["table"]
        sheet_name = kwargs["sheet_name"]
        sheet_data = self._get_sheet(sheet_name=sheet_name)
        sheet_data.dropna(inplace=True, how="all")
        table_name_list = list(sheet_data[0])
        if table not in table_name_list:
            raise Exception(f"not found {table}")
        table_data_start_index = table_name_list.index(table)
        table_data_start_end = len(sheet_data)
        for index, value in enumerate(table_name_list[table_data_start_index + 1:]):
            if str(value).lower().startswith("table"):
                table_data_start_end = table_data_start_index + index + 1
                break
        table_data = sheet_data.iloc[table_data_start_index + 1:table_data_start_end, :]
        return table_data

    def get_data_key_use_first_row(self, **kwargs):
        """
        获取数据,以第一行的值为key

        :param kwargs:
        :return:
        """
        table = kwargs["table"]
        sheet_name = kwargs["sheet_name"]
        table_data = self._get_table_data(table=table, sheet_name=sheet_name)
        table_data.columns = table_data.iloc[0]
        return list(table_data.iloc[1:].T.to_dict().values())

    def get_data_key_use_first_col(self, **kwargs):
        """
        获取数据,以第一行的值为key

        :param kwargs:
        :return:
        """
        table = kwargs["table"]
        sheet_name = kwargs["sheet_name"]
        table_data = self._get_table_data(table=table, sheet_name=sheet_name)
        return dict(zip(list(table_data[0]), list(table_data[1])))


def test():
    analyse_data = Analyse(file=os.path.join(os.path.dirname(__file__), "data.xlsx"))
    res = analyse_data.get_data_key_use_first_col(table="Table:first_col", sheet_name="data")
    print(res)


if __name__ == '__main__':
    test()
    # {'input': 1, 'output': 2}
    # [{'input': 1, 'ouput': 2}, {'input': 3, 'ouput': 4}]

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值