我是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。