计算每个 COLUMN 中的 ROWS 数?封装 XLRD

Count number of ROWS inside each COLUMN? package XLRD

我开始使用 python 3.7 的 XLRD 包。

我有一个包含固定列数 (20) 的 excel 文件,但在每一列中,行数都在变化(例如:第一列有 21 行,第二列有 14 行) .

我写了这个:

for col in range(worksheet.ncols):
    rows_number= worksheet.nrows
    print(rows_number)

我想知道每一列的行数。使用此代码,我得到第一列内行数的 20 倍(列数)。其实我明白为什么。我在不更改列的情况下迭代 nrows。 如何获取所有列的行数? 如果我尝试如下,我得到 AttributeError 因为 col 没有 nrows 属性。

for col in range(worksheet.ncols):
    rows_number= col.nrows
    print(rows_number)

感谢您的帮助!!

您可以使用嵌套的 while 循环来计算每列中的行数

    for c in range(worksheet.ncols):

        counter = 0  # count of the rows
        value = worksheet.cell(row=counter, col=c).value
        while value != EMPTY:
            counter += 1
            row += 1

将单词 EMPTY 替换为测试以查看单元格是否为空。例如,一旦 while 循环完成,您就可以将此信息存储在字典中。

您可以使用列表理解来获取列中的非空单元格,使用 col method in xlrd and comparing the Cell Type 然后计算其长度

for colx in range(worksheet.ncols):
    non_emptycells=[i for i,x in enumerate(sheet.col(colx)) if x.ctype is not 0]
    print(len(non_emptycells))