自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開發(fā) 后端
本文基于粉絲提問如何從Excel文件中提取指定的數(shù)據(jù)并生成新的文件的問題,給出了兩種解決方案。針對這個問題,小編這里整理了兩個思路.

[[431090]]

大家好,我是Python進階者。

前言

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

一、思路

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

二、解決方法

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

  1. # coding: utf-8 
  2. from openpyxl import load_workbook, Workbook 
  3.  
  4. # 數(shù)據(jù)所在的文件夾目錄 
  5. path = 'C:/Users/pdcfi/Desktop/xiaoluo' 
  6.  
  7. # 打開數(shù)據(jù)工作簿 
  8. workbook = load_workbook(path + '/' + '巍圖1.xlsx'
  9. # 打開工作表 
  10. sheet = workbook.active 
  11. buy_mount = sheet['A'
  12. row_lst = [] 
  13. for cell in buy_mount: 
  14.     if isinstance(cell.value, intand cell.value == 10: 
  15.         print(cell.row) 
  16.         row_lst.append(cell.row) 
  17.  
  18. new_workbook = Workbook() 
  19. new_sheet = new_workbook.active 
  20.  
  21. # 創(chuàng)建和原數(shù)據(jù) 一樣的表頭(第一行) 
  22. header = sheet[1] 
  23. header_lst = [] 
  24. for cell in header: 
  25.     header_lst.append(cell.value) 
  26. new_sheet.append(header_lst) 
  27.  
  28. # 從舊表中根據(jù)行號提取符合條件的行,并遍歷單元格獲取值,以列表形式寫入新表 
  29. for row in row_lst: 
  30.     data_lst = [] 
  31.     for cell in sheet[row]: 
  32.         data_lst.append(cell.value) 
  33.     new_sheet.append(data_lst) 
  34.  
  35. # 最后切記保存 
  36. new_workbook.save(path + '/' + 'xiaoluo_符合篩選條件的新表.xlsx'

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

2)注意

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

A列的數(shù)據(jù)是從B列取的,是引用,所有等到訪問的時候,其實是獲取不到的,所有導致我們去讀取的時候,查找的cell為空,自然我們就無法提取到數(shù)據(jù)。

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

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

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

三、總結

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

針對這個問題,小編這里整理了兩個思路,當然方法肯定遠遠不只是這兩種!

 

責任編輯:姜華 來源: Python爬蟲與數(shù)據(jù)挖掘
相關推薦

2009-11-09 14:57:37

WCF上傳文件

2021-07-14 09:00:00

JavaFX開發(fā)應用

2009-07-03 17:15:31

jsp上傳文件

2020-07-08 07:54:03

PythonPDF數(shù)據(jù)

2021-02-23 09:03:13

Python拆分ExcelCSV文件

2020-11-27 07:38:43

MongoDB

2022-12-07 08:42:35

2021-08-09 13:31:25

PythonExcel代碼

2017-09-05 13:01:11

CocoaPods開源庫GitHub

2011-06-28 12:58:44

表分區(qū)

2021-08-02 07:35:19

Nacos配置中心namespace

2009-10-27 16:05:52

VB.NET File

2021-03-29 23:03:04

數(shù)據(jù)集數(shù)據(jù)庫科學

2021-09-26 16:08:23

CC++clang_forma

2011-01-10 14:41:26

2011-05-03 15:59:00

黑盒打印機

2021-02-10 09:34:40

Python文件的壓縮PyCharm

2021-09-30 18:27:38

數(shù)據(jù)倉庫ETL

2022-02-15 09:03:07

Pythonmofish庫代碼

2025-04-09 08:21:10

點贊
收藏

51CTO技術棧公眾號