Python中的单元格值列索引编号



我是Python的新手,我在这个问题上很难,我需要您的帮助。

Q1 Q2 Q3 Q4 Q5
25 9  57 23 7
61 41 29 5  57
54 34 58 10 7
13 13 63 26 45
31 71 40 40 40
24 38 63 63 47
31 50 43 2  61
68 33 13 9  63
28 1  30 39 71

我有一个带有上述数据的Excel报告。我想编写一个浏览第一行中所有列的代码,并在列值(即3(中输出带有s的列的索引号。我想使用索引号提取该列的数据。当Excel文件定期更新时,我不想使用行和单元引用,因此D列将始终移动。

def find_idx():
    wb = xlrd.open_workbook(filename='data.xlsx')  # open report
    report_sheet1 = wb.sheet_by_name('Sheet 1')
    for j in range(report_sheet1.ncols): 
        j=report_sheet1.cell_value(0, j)
        if 'YTD' in j:
            break
        return j.index('Q4')
find_idx()

我得到的"找不到" erro

我想要的是返回列索引号(即3(,以便我可以在另一个代码中轻松地调用它。我该如何解决?

hass!

据我了解,您想获得Excel文件的列的索引,其名称包含给定的子字符串,例如Y。是的吗?

如果是这样,这是一个不需要熊猫的工作片段:

import xlrd

def find_idx(excel_filename, sheet_name, col_name_lookup):
    """
    Returns the column index of the first column that
    its name contains the string col_name_lookup. If
    the col_name_lookup is not found, it returns -1.
    """
    wb = xlrd.open_workbook(filename=excel_filename)
    report_sheet1 = wb.sheet_by_name(sheet_name)
    for col_ix in range(report_sheet1.ncols):
        col_name = report_sheet1.cell_value(0, col_ix)
        if col_name_lookup in col_name:
            return col_ix
    return -1

if __name__ == "__main__":
    excel_filename = "./data.xlsx"
    sheet_name = "Sheet 1"
    col_name_lookup = "S"
    print(find_idx(excel_filename, sheet_name, col_name_lookup))

我试图为您的变量提供更多的语义名称(我将您的变量j转换为其他两个变量:col_ix(循环的实际列索引(,以及真正代表列名称的变量col_name

此代码假定您的Excel文件的第一行包含列名,如果找不到这些所需的子字符串,请返回-1。

最新更新