Python函數(shù)之iterrows(),iteritems(),itertuples()的區(qū)別說(shuō)明
iterrows(),iteritems(),itertuples()區(qū)別
Python函數(shù)之iterrows, iteritems, itertuples對(duì)dataframe進(jìn)行遍歷
iterrows(): 將DataFrame迭代為(insex, Series)對(duì)。iteritems(): 將DataFrame迭代為(列名, Series)對(duì)itertuples(): 將DataFrame迭代為元祖。



DataFrame數(shù)據(jù)遍歷方式 iteritems iterrows itertuples
對(duì)Pandas對(duì)象進(jìn)行基本迭代的行為取決于類型。在遍歷一個(gè)Series時(shí),它被視為類似數(shù)組,并且基本迭代產(chǎn)生這些值。其他數(shù)據(jù)結(jié)構(gòu)(如DataFrame和Panel)遵循類似于字典的慣例,即迭代對(duì)象的 鍵 。
總之,基本的迭代產(chǎn)生
Series- 值DataFrame- 列標(biāo)簽Panel- 項(xiàng)目標(biāo)簽
迭代DataFrame
迭代DataFrame會(huì)給出列名稱。讓我們考慮下面的例子來(lái)理解相同的情況。
import pandas as pd
import numpy as np
N=20
df = pd.DataFrame({
? ? 'A': pd.date_range(start='2021-01-01',periods=N,freq='D'),
? ? 'x': np.linspace(0,stop=N-1,num=N),
? ? 'y': np.random.rand(N),
? ? 'C': np.random.choice(['Low','Medium','High'],N).tolist(),
? ? 'D': np.random.normal(100, 10, size=(N)).tolist()
? ? })
for col in df:
? ?print(col)其 輸出 如下
A
C
D
x
y
要迭代DataFrame的行,我們可以使用以下函數(shù) -
iteritems()- 遍歷(鍵,值)對(duì)iterrows()- 遍歷行(索引,序列)對(duì)itertuples()- 遍歷 行為namedtuples
iteritems()
將每列作為關(guān)鍵字值進(jìn)行迭代,并將標(biāo)簽作為鍵和列值作為Series對(duì)象進(jìn)行迭代。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns=['col1','col2','col3']) for key,value in df.iteritems(): ? ?print(key,value)
其 輸出 如下 :
col1 0 0.265778
1 -0.814620
2 -2.384911
3 0.525155
Name: col1, dtype: float64
col2 0 2.580894
1 -0.408090
2 0.641011
3 0.591557
Name: col2, dtype: float64
col3 0 -0.830860
1 0.413565
2 -2.251128
3 -0.392120
Name: col3, dtype: float64
請(qǐng)注意,每個(gè)列在Series中作為鍵值對(duì)單獨(dú)迭代。
iterrows()
iterrows()返回產(chǎn)生每個(gè)索引值的迭代器以及包含每行數(shù)據(jù)的序列。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3']) for row_index,row in df.iterrows(): ? ?print(row_index,row)
其 輸出 如下
0 col1 -0.536180
col2 -0.422245
col3 -0.049302
Name: 0, dtype: float64
1 col1 -0.577882
col2 0.546570
col3 1.210293
Name: 1, dtype: float64
2 col1 0.593660
col2 0.621967
col3 0.456040
Name: 2, dtype: float64
3 col1 0.874323
col2 0.303070
col3 -0.107727
Name: 3, dtype: float64
注 - 由于 iterrows() 遍歷行,因此它不會(huì)保留行中的數(shù)據(jù)類型。0,1,2是行索引,col1,col2,col3是列索引。
itertuples()
itertuples()方法將返回一個(gè)迭代器,為DataFrame中的每一行生成一個(gè)命名的元組。元組的第一個(gè)元素將是行的相應(yīng)索引值,而其余值是行值。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3']) for row in df.itertuples(): ? ? print(row)
其 輸出 如下
Pandas(Index=0, col1=-0.4029137277161786, col2=1.3034737750584355, col3=0.8197109653411052)
Pandas(Index=1, col1=-0.43013422882386704, col2=-0.2536252662252256, col3=0.9102527012477817)
Pandas(Index=2, col1=0.25877683462048057, col2=-0.7725072659033637, col3=-0.013946376730006241)
Pandas(Index=3, col1=0.3611368595844501, col2=-0.2777909818571997, col3=0.9396027945103758)
注 : 不要在迭代時(shí)嘗試修改任何對(duì)象。 迭代是為了讀取而迭代器返回原始對(duì)象(視圖)的副本,因此這些更改不會(huì)反映到原始對(duì)象上。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3']) for index, row in df.iterrows(): ? ?row['a'] = 10 print(df)
其 輸出 如下
col1 col2 col3
0 0.579118 0.444899 -0.693009
1 0.479294 0.080658 -0.126600
2 0.095121 -1.870492 0.596165
3 1.885483 -0.122502 -1.531169
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
批標(biāo)準(zhǔn)化層 tf.keras.layers.Batchnormalization()解析
這篇文章主要介紹了批標(biāo)準(zhǔn)化層 tf.keras.layers.Batchnormalization(),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
對(duì)python PLT中的image和skimage處理圖片方法詳解
今天小編就為大家分享一篇對(duì)python PLT中的image和skimage處理圖片方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
梯度下降法介紹及利用Python實(shí)現(xiàn)的方法示例
梯度下降算法是一個(gè)很基本的算法,在機(jī)器學(xué)習(xí)和優(yōu)化中有著非常重要的作用,下面這篇文章主要給大家介紹了關(guān)于利用Python實(shí)現(xiàn)梯度下降法的相關(guān)資料,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07
python使用mysql數(shù)據(jù)庫(kù)示例代碼
本篇文章主要介紹了python使用mysql數(shù)據(jù)庫(kù)示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
python sklearn庫(kù)實(shí)現(xiàn)簡(jiǎn)單邏輯回歸的實(shí)例代碼
Scikit-learn(sklearn)是機(jī)器學(xué)習(xí)中常用的第三方模塊,對(duì)常用的機(jī)器學(xué)習(xí)方法進(jìn)行了封裝,這篇文章主要介紹了python sklearn庫(kù)實(shí)現(xiàn)簡(jiǎn)單邏輯回歸的實(shí)例代碼,需要的朋友可以參考下2019-07-07
Python利用ROI進(jìn)行圖像合成的問(wèn)題小結(jié)
圖像的 ROI (region of interest) 是指圖像中感興趣區(qū)域、在 OpenCV 中圖像設(shè)置圖像 ROI 區(qū)域,實(shí)現(xiàn)只對(duì) ROI 區(qū)域操作,本文給大家介紹Python利用ROI進(jìn)行圖像合成的問(wèn)題小結(jié),感興趣的朋友一起看看吧2021-07-07
Python加密方法小結(jié)【md5,base64,sha1】
這篇文章主要介紹了Python加密方法,結(jié)合實(shí)例形式總結(jié)分析了md5,base64,sha1的簡(jiǎn)單加密方法,需要的朋友可以參考下2017-07-07

