亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何根據Openpyxl中單元格的最大值返回標題的字符串

如何根據Openpyxl中單元格的最大值返回標題的字符串

慕容3067478 2021-11-30 15:54:20
早上好家伙!Openpyxl 的快速問題:我正在使用 Python 編輯 xlsx 文檔并生成各種統計信息。我的腳本的一部分是生成單元格范圍的最大值:temp_list=[]temp_max=[]for row in sheet.iter_rows(min_row=3, min_col=10, max_row=508, max_col=13):     print(row)    for cell in row:        temp_list.append(cell.value)    print(temp_list)    temp_max.append(max(temp_list))    temp_list=[]我還希望能夠打印包含所需單元格范圍最大值的列標題的字符串。我的數據結構如下所示:關于如何這樣做的任何想法?
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

首先,感謝 Bernardo 的提示。我找到了一個體面的工作解決方案,但仍然有一個小問題。也許有人可以提供幫助。讓我修改我的初始聲明:這是我現在正在使用的代碼:


temp_list=[]

headers_list=[]


for row in sheet.iter_rows(min_row=3, min_col=27, max_row=508, max_col=32): #Index starts at 1 // Here we set the rows/columns containing the data to be analyzed

    for cell in row:

        temp_list.append(cell.value)

    for cell in row:

        if cell.value == max(temp_list):

            print(str(cell.column))

            print(cell.value)

            print(sheet.cell(row=1, column=cell.column).value)

            headers_list.append(sheet.cell(row=1,column=cell.column).value)

        else:

            print('keep going.')

    temp_list = []

這個公式有效,但有一個小問題:例如,如果一行有兩次相同的值(即:25,9,25,8,9),這個循環將打印 2 個標題而不是一個。我的問題是:


我怎樣才能讓這個循環只考慮連續最大值的第一個匹配項?


查看完整回答
反對 回復 2021-11-30
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

這似乎是一個典型的 INDEX/MATCH Excel 問題。


您是否嘗試過檢索每個 temp_list 中最大值的索引?


您可以使用 numpy.argmax() 之類的函數來獲取“temp_list”數組中最大值的索引,然后使用此索引來定位標題并將字符串附加到名為“max_headers”的新列表中包含按出現順序排列的所有標題字符串。


它看起來像這樣


for cell in row:

        temp_list.append(cell.value)

        i_max = np.argmax(temp_list)

        max_headers.append(cell(row = 1, column = i_max).value)


等等等等。當然,為了讓它工作,你的 temp_list 應該是一個 numpy 數組而不是一個簡單的 python 列表,并且必須定義 max_headers 列表。


查看完整回答
反對 回復 2021-11-30
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

你可能想要這樣的東西:


headers = [c for c in next(ws.iter_rows(min_col=27, max_col=32, min_row=1, max_row=1, values_only=True))]


for row in ws.iter_rows(min_row=3, min_col=27, max_row=508, max_col=32, values_only=True):

   mx = max(row)

   idx = row.index(mx)

   col = headers[idx]


查看完整回答
反對 回復 2021-11-30
  • 3 回答
  • 0 關注
  • 226 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號