簡體   English   中英

python中按單元格值的列索引號

[英]Column index number by cell value in 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()

我得到“找不到子字符串”錯誤

我想要的是返回列索引號(即3),以便我可以輕松地在另一個代碼中調用它。 我怎樣才能解決這個問題?

哈斯!

據我了解,您想獲取一個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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM