<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          手把手教你使用openpyxl庫(kù)從Excel文件中提取指定的數(shù)據(jù)并生成新的文件(附源碼)

          共 2376字,需瀏覽 5分鐘

           ·

          2021-10-26 21:01

          點(diǎn)擊上方“Python爬蟲(chóng)與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書(shū)籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書(shū)

          行人刁斗風(fēng)沙暗,公主琵琶幽怨多。

          ????大家好,我是Python進(jìn)階者。

          前言

          ????前幾天有個(gè)叫【Lcc】的粉絲在Python交流群里問(wèn)了一道關(guān)于從Excel文件中提取指定的數(shù)據(jù)并生成新的文件的問(wèn)題,初步一看確實(shí)有點(diǎn)難,不過(guò)還是有思路的。她的目標(biāo)就是想提取文件中A列單元格中數(shù)據(jù)為10的所有行,看到A列的表頭是時(shí)間,10就代表著上午的10小時(shí),也就是說(shuō)她需要提取每一天中的上午10點(diǎn)鐘的數(shù)據(jù)。這個(gè)數(shù)據(jù)在做研究的時(shí)候還是挺有用的,之后結(jié)合作圖,就可以挖掘出部分潛在規(guī)律了,這個(gè)在此不做深究。


          一、思路

          ????這個(gè)問(wèn)題看似簡(jiǎn)單,直接用Excel中的篩選就可以了。誠(chéng)然,數(shù)據(jù)篩選,之后擴(kuò)展行確實(shí)可以做到,針對(duì)一個(gè)或者兩個(gè)或者10位數(shù)以下的Excel文件,我們尚且可以游刃有余,但是面對(duì)成百上千個(gè)這樣的數(shù)據(jù)文件,怕就力不從心了,如果還是挨個(gè)進(jìn)行處理,那就難受了,所以用Python來(lái)批量處理還是很奈斯的。下面一起來(lái)看看吧!


          二、解決方法

          ????????其實(shí)這個(gè)問(wèn)題和轉(zhuǎn)載劉早起之前的那篇文章處理思路一模一樣,Python辦公自動(dòng)化|批量提取Excel數(shù)據(jù),感興趣的話,可以戳鏈接看看,只不過(guò)稍微有些改變,把那個(gè)判斷條件改為等于就可以了,下面直接上代碼。關(guān)于代碼的詳細(xì)解析,可以參考上面提到的文章,這里不做贅述。

          # coding: utf-8from openpyxl import load_workbook, Workbook
          # 數(shù)據(jù)所在的文件夾目錄path = 'C:/Users/pdcfi/Desktop/xiaoluo'
          # 打開(kāi)數(shù)據(jù)工作簿workbook = load_workbook(path + '/' + '巍圖1.xlsx')# 打開(kāi)工作表sheet = workbook.activebuy_mount = sheet['A']row_lst = []for cell in buy_mount: if isinstance(cell.value, int) and cell.value == 10: print(cell.row) row_lst.append(cell.row)
          new_workbook = Workbook()new_sheet = new_workbook.active
          #?創(chuàng)建和原數(shù)據(jù)?一樣的表頭(第一行)header = sheet[1]header_lst = []for cell in header: header_lst.append(cell.value)new_sheet.append(header_lst)
          # 從舊表中根據(jù)行號(hào)提取符合條件的行,并遍歷單元格獲取值,以列表形式寫入新表for row in row_lst: data_lst = [] for cell in sheet[row]: data_lst.append(cell.value) new_sheet.append(data_lst)
          # 最后切記保存new_workbook.save(path?+?'/'?+?'xiaoluo_符合篩選條件的新表.xlsx')

          ????之后在本地查看結(jié)果,可以看到,符合條件的數(shù)據(jù)全部都被提取出來(lái)了。



          2)注意

          ? ? 還記得上圖中粉絲說(shuō)自己提取到的數(shù)據(jù)為啥只有header,而沒(méi)有數(shù)據(jù)么?其實(shí)這里有個(gè)坑,隱藏在她的原始數(shù)據(jù)中,請(qǐng)看下圖。

          ??? A列的數(shù)據(jù)是從B列取的,是引用,所有等到訪問(wèn)的時(shí)候,其實(shí)是獲取不到的,所有導(dǎo)致我們?nèi)プx取的時(shí)候,查找的cell為空,自然我們就無(wú)法提取到數(shù)據(jù)。

          ????針對(duì)這樣的情況,這里給出兩個(gè)方案,其一是將A列,復(fù)制粘貼,粘貼類型為"值",然后重新保存excel進(jìn)行讀取就可以搞定了;其二是以B列作為索引,進(jìn)行時(shí)間取值,然后創(chuàng)建新的一列,之后再做提取,實(shí)現(xiàn)難度稍微大一些,取時(shí)間的代碼可以參考。

          df_raw['時(shí)間']?=?pd.to_datetime(df_raw['時(shí)間'],?format='%Y-%m-%d').hour

          ????本文用的是第一種方法,其實(shí)第二種方法顯得更加智能一些,難度稍微大一些,實(shí)現(xiàn)方法大家可以踴躍的嘗試下。


          三、總結(jié)

          ??? 我是Python進(jìn)階者。本文基于粉絲提問(wèn)如何從Excel文件中提取指定的數(shù)據(jù)并生成新的文件的問(wèn)題,給出了兩種解決方案。

          ????針對(duì)這個(gè)問(wèn)題,小編這里整理了兩個(gè)思路,當(dāng)然方法肯定遠(yuǎn)遠(yuǎn)不只是這兩種,如果你有其他的方法,可以隨時(shí)分享給我噢

          ????小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過(guò)程中,有遇到任何問(wèn)題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說(shuō)一兩句吧~~

          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一级性AAAA生活 | 亚洲日韩免费一级无码毛片 | 18禁日本网站 | 91网站18禁 | 婷婷操逼网 |