python如何選取excel文件滿足特定條件的行
python選取excel文件滿足特定條件的行
使用iloc
df = pd.read_excel('data.xlsx',engine='openpyxl')
x=df.iloc[df.iloc[:, 1].values==i, 6].values #第二列值等于i的所有行的第六列python:openpyxl取某一行、某一列、應(yīng)用excel函數(shù)
取某一行
首先,我們快速創(chuàng)建一個表格:
from openpyxl import Workbook
from openpyxl import load_workbook
wb = Workbook() # pay attention to the first letter
sheet_2 = wb.create_sheet('sheet_2')
for i in range(1, 20):
for j in range(1, 20):
sheet_2.cell(i, j, value=j*i)
數(shù)據(jù)夠多了。
這時,我們需要了解到,行和列是怎么構(gòu)成的。
下面插播一條手動輸入數(shù)據(jù)的代碼(和其它內(nèi)容無關(guān),只是用來區(qū)別行和列的不同)
rows = (
(998, 997, 996),
(787, 988, 876),
(233, 445, 786)
)
for row in rows:
sheet.append(row)根據(jù)自己輸入數(shù)據(jù)創(chuàng)建excel表格可知,每一行都是一個元組,每一列則不是元組(他是個generator)。
這個認知非常重要??!
所以在取全部行的時候,很簡單,我們只需要遍歷一遍表格,得到單個元組,再遍歷一遍元組,得到單個對象,并獲取它的值。
這個非常簡單,兩次迭代即可搞定,就不放代碼la。
可以選擇直接print,也可以創(chuàng)建列表,放在列表里。
如果想要列表好看,就創(chuàng)建兩個列表,組成一個二位列表……(就有點類似于dataframe拉嘿嘿串臺了)。
我要輸出某一行的值:
for i in sheet_2[5]:
print(i.value, end='\t')
print()
'''
5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95
'''注意:這里,我輸入的是5,他輸出的是第五行。
和python中index的取值不同,這里輸入0,會報錯。因為行列都是從1開始的。
取某一列
行,是一個元組,輸出很方便,那么列怎么辦呢?
如果上述代碼,會直接報錯。
我們可以先嘗試輸出全部的“列”:
list1 = []
for col1 in sheet_2.columns:
list_1 = []
for col_1 in col1:
list_1.append(col_1.value)
list1.append(list_1)
print(list1)
print(list1[0])list1是二維列表,list_1是二維列表中的一維列表。
如果想要輸出某一行,可以直接利用index。
但是這樣很麻煩,數(shù)據(jù)太多的話,就很慢,能不能只單純的輸出一列?
能。
sheet_2_col = tuple(sheet_2.columns)
for i in range(0, 4):
for j in sheet_2_col[i]:
print(j.coordinate, j.value, end="\t")
print()以上我取的是1~4列,即:A-D列,輸出的是其標(biāo)號+值。但為什么我寫了0?剛剛不是說,沒有0嗎?
因為我把“列”變成了元組。
元組可以有0。
其實這個方法在處理多數(shù)據(jù)的時候還是有弊端,我們看看下一個方法。
for i in sheet_2.rows:
for j in i:
if 'A' in j.coordinate:
print(j.coordinate, j.value, end='\t')
print()這里只輸出了A列。
依然需要遍歷一遍才行。
應(yīng)用excel里的函數(shù)
for i in range(1, 20):
sheet_2[f"T{i}"] = f'=AVERAGE(A{i}:S{i})'
sheet_2[f"U{i}"] = f'=SUM(A{i}:S{i})'
sheet_2['V1'] = 'AVERAGE'
sheet_2['W1'] = 'Sum'
for i in range(2, 20):
sheet_2[f"V{i}"] = f'=AVERAGE(B{i}:S{i})'
sheet_2[f"W{i}"] = f'=SUM(B{i}:S{i})'上面有很多小細節(jié)需要注意,{i}用來占位,f就是excel里面那個f,注意,引號在等號前面!
如果列表頭要添加文字
很簡單拉,直接修改單元格內(nèi)容,并注意公式容納數(shù)據(jù)的范圍即可。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python?實操顯示數(shù)據(jù)圖表并固定時間長度
這篇文章主要介紹了Python?實操顯示數(shù)據(jù)圖表并固定時間長度,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
python 數(shù)字類型和字符串類型的相互轉(zhuǎn)換實例
今天小編就為大家分享一篇python 數(shù)字類型和字符串類型的相互轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
在linux下實現(xiàn) python 監(jiān)控usb設(shè)備信號
今天小編就為大家分享一篇在linux下實現(xiàn) python 監(jiān)控usb設(shè)備信號,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python實現(xiàn)的讀取/更改/寫入xml文件操作示例
這篇文章主要介紹了Python實現(xiàn)的讀取/更改/寫入xml文件操作,涉及Python針對xml文件的讀取、節(jié)點操作、寫入等相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-08-08

