繁体   English   中英

XLRD 无法读取多索引列名

[英]XLRD cannot read multiindex column name

我对多索引列名有疑问。 我正在使用 XLRD 使用 json.dumps 将 excel 数据转换为json.dumps但它只给了我一行列名。 我已阅读有关多级 json 的信息,但我不知道如何使用 XLRD。

这是我的表列名称示例

代码示例:

for i in path:
with xlrd.open_workbook(i) as wb:
    print([i])
    kwd = 'sage'
    print(wb.sheet_names())
    for j in range(wb.nsheets):
        worksheet = wb.sheet_by_index(j)
        data = []
        n = 0
        nn = 0
        keyword = 'sage'
        keyword2 = 'adm'
        try:
            skip = skip_row(worksheet, n, keyword)
            keys = [v.value for v in worksheet.row(skip)]
        except:
            try:
                skip = skip_row2(worksheet, nn, keyword2)
                keys = [v.value for v in worksheet.row(skip)]
            except:
                continue
        print(keys)
        for row_number in range(check_skip(skip), worksheet.nrows):
            if row_number == 0:
                continue
            row_data = {}
            for col_number, cell in enumerate(worksheet.row(row_number)):

                row_data[keys[col_number]] = cell.value
            data.append(row_data)
        print(json.dumps({'Data': data}))

顺便说一句,每个工作表在列名之前都有不同的数字要跳过,这就是为什么我的代码得到了跳过行的 function 的原因。 在我跳过该行并找到我的列名的确切位置之后。 然后我开始读取值。 但是,是的,我认为问题出在哪里,因为我有两行列名。 并且仍然混淆如何使用 XLRD 进行多级 json 或至少将列名与 XLRD 连接(我猜不能)。

期望的结果多级 json:

{ "Data":[{ "ID" : "997", "Tax" : [{"Date" : "9/7/2019", "Total" : 2300, "Grand Total" : 340000"}], "Tax ID" : "ST-000", .... }]}

pss:// 我曾尝试使用 pandas 但它给我带来了很多麻烦,因为我使用的是大数据。

您可以在 panda 中使用多索引,首先您需要为每个工作表获取 header 行索引。

header_indexes = get_header_indexes(excel_filepath, sheet_index) #returns list of header indexes

您需要编写get_header_indexes function 来扫描工作表并返回 header 索引。

您可以使用 panda 从 dataframe 获取 JSON。

import pandas as pd
df = pd.read_excel(excel_filepath, header=header_indexes, sheet_name=sheet_index)
data = df.to_dict(orient="records")

对于多个标题data包含字典列表并且每个字典都有元组作为键,您可以根据您的要求将其重新格式化为最终的 JSON。

注意:使用chunksize读取大文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM