亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python如何選取excel文件滿足特定條件的行

 更新時(shí)間:2024年03月26日 14:35:42   作者:人間真正走過~  
這篇文章主要介紹了python如何選取excel文件滿足特定條件的行問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

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)建一個(gè)表格:

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ù)夠多了。

這時(shí),我們需要了解到,行和列是怎么構(gòu)成的。

下面插播一條手動(dòng)輸入數(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表格可知,每一行都是一個(gè)元組,每一列則不是元組(他是個(gè)generator)。 

這個(gè)認(rèn)知非常重要??!

所以在取全部行的時(shí)候,很簡單,我們只需要遍歷一遍表格,得到單個(gè)元組,再遍歷一遍元組,得到單個(gè)對(duì)象,并獲取它的值。

這個(gè)非常簡單,兩次迭代即可搞定,就不放代碼la。

可以選擇直接print,也可以創(chuàng)建列表,放在列表里。

如果想要列表好看,就創(chuàng)建兩個(gè)列表,組成一個(gè)二位列表……(就有點(diǎn)類似于dataframe拉嘿嘿串臺(tái)了)。

我要輸出某一行的值:

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,會(huì)報(bào)錯(cuò)。因?yàn)樾辛卸际菑?開始的。

取某一列

行,是一個(gè)元組,輸出很方便,那么列怎么辦呢?

如果上述代碼,會(huì)直接報(bào)錯(cuò)。

我們可以先嘗試輸出全部的“列”:

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)號(hào)+值。但為什么我寫了0?剛剛不是說,沒有0嗎?

因?yàn)槲野?ldquo;列”變成了元組。

元組可以有0。

其實(shí)這個(gè)方法在處理多數(shù)據(jù)的時(shí)候還是有弊端,我們看看下一個(gè)方法。

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})'

上面有很多小細(xì)節(jié)需要注意,{i}用來占位,f就是excel里面那個(gè)f,注意,引號(hào)在等號(hào)前面!

如果列表頭要添加文字

很簡單拉,直接修改單元格內(nèi)容,并注意公式容納數(shù)據(jù)的范圍即可。 

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論