在Pandas DataFrame中迭代行和列。


在本文中,我們將學習關於pandas、DataFrame以及如何使用各種方法在pandas DataFrame中迭代行和列。迭代是我們處理包含行和列的表格資料時執行的基本操作。

要在系統中安裝pandas,請在cmd中執行命令。

pip install pandas

方法1. 使用Iterrows()方法。

示例

import pandas as pd

df = pd.DataFrame({'Name': ['Kalyan', 'Gungun', 'Sona', 'Ram'],
   'Age': [21, 20, 23, 23],
   'Roll': [12, 13, 14, 15],
   'Game': ['Cricket', 'Lodu', 'Chess', 'Carrom']})

print("No", "Name", "Age", "Roll", "Game")
for index, row in df.iterrows():
   print(index, row['Name'], row['Age'], row['Roll'], row['Game'])

輸出

No Name   Age Roll Game
0  Kalyan 21  12   Cricket
1  Gungun 20  13   Lodu
2  Sona   23  14   Chess
3  Ram    23  15   Carrom 

解釋

在上面的程式中,我們建立一個包含名稱、年齡、學號和遊戲作為列的DataFrame。我們使用iterrows()方法,該方法允許我們迭代DataFrame並返回**行**作為包含索引和行資料的元組。最後,我們列印迭代後獲得的資料。

方法2. 使用itertuples()方法。

示例

import pandas as pd

df = pd.DataFrame({'Name': ['Kalyan', 'Gungun', 'Sona', 'Ram'],
   'Age': [21, 20, 23, 23],
   'Roll': [12, 13, 14, 15],
   'Game': ['Cricket', 'Lodu', 'Chess', 'Carrom']})

print("No", "Name", "Age", "Roll", "Game")
for row in df.itertuples():
   print(row.Index, row.Name, row.Age, row.Roll, row.Game)

輸出

No Name   Age Roll Game
0  Kalyan 21  12   Cricket
1  Gungun 20  13   Lodu
2  Sona   23  14   Chess
3  Ram    23  15   Carrom 

解釋

在上面的程式中,我們建立一個包含名稱、年齡、學號和遊戲作為列的DataFrame。我們使用itertuples()方法,該方法允許我們迭代行併為每一行和列的值返回**命名元組**。最後,我們列印迭代後獲得的資料。

方法3. 使用帶有Axis=1的Apply()函式進行行迭代。

示例

import pandas as pd

df = pd.DataFrame({'Name': ['Kalyan', 'Gungun', 'Sona', 'Ram'],
   'Age': [21, 20, 23, 23],
   'Roll': [12, 13, 14, 15],
   'Game': ['Cricket', 'Lodu', 'Chess', 'Carrom']})

print("Name", "Age", "Roll", "Game")
def process_row(row):
   print(row['Name'], row['Age'], row['Roll'], row['Game'])

df.apply(process_row, axis=1)

輸出

Name   Age Roll Game
Kalyan 21  12   Cricket
Gungun 20  13   Lodu
Sona   23  14   Chess
Ram    23  15   Carrom

解釋

在上面的程式中,我們建立一個包含名稱、年齡、學號和遊戲作為列的DataFrame。我們使用apply()函式,該函式允許我們對DataFrame的每一行應用自定義函式。當我們寫axis=1時,我們可以迭代行並執行逐行操作。

方法4. 使用帶有Axis=0的Apply()函式進行列迭代。

示例

import pandas as pd

df = pd.DataFrame({'Name': ['Kalyan', 'Gungun', 'Sona', 'Ram'],
   'Age': [21, 20, 23, 23],
   'Roll': [12, 13, 14, 15],
   'Game': ['Cricket', 'Lodu', 'Chess', 'Carrom']})


def process_column(column):
   print(column)

df.apply(process_column, axis=0)

輸出

0    Kalyan
1    Gungun
2    Sona
3     Ram
Name: Name, dtype: object
0    21
1    20
2    23
3    23
Name: Age, dtype: int64
0    12
1    13
2    14
3    15
Name: Roll, dtype: int64
0    Cricket
1     Lodu
2     Chess
3     Carrom
Name: Game, dtype: object

解釋

在上面的程式中,我們建立了一個包含名稱、年齡、學號和遊戲作為列的DataFrame。我們使用apply()函式,該函式允許我們對DataFrame的每一列應用自定義函式。當我們寫axis=0時,我們可以迭代行並執行逐行操作。它類似於行迭代(在前面的示例中編寫)。

方法5. 使用Lambda函式和Apply()函式。

示例

import pandas as pd

df = pd.DataFrame({'Name': ['Kalyan', 'Gungun', 'Sona', 'Ram'],
   'Age': [21, 20, 23, 23],
   'Roll': [12, 13, 14, 15],
   'Game': ['Cricket', 'Lodu', 'Chess', 'Carrom']})

print("Name", "Age", "Roll", "Game")
df.apply(lambda row: print(row['Name'], row['Age'], row['Roll'], row['Game']), axis=1)

輸出

Name   Age Roll Game
Kalyan 21  12   Cricket
Gungun 20  13   Lodu
Sona   23  14   Chess
Ram    23  15   Carrom

解釋

在上面的程式中,我們建立一個包含名稱、年齡、學號和遊戲作為列的DataFrame。我們使用lambda函式以及apply()方法來高效地迭代DataFrame中的行。

因此,我們瞭解了各種方法,可以使用這些方法在Pandas DataFrame中迭代行和列。儘管在最後一種方法中,與iterrows()、itertuples()或apply()等其他方法相比,nditer()並不總是合適的。nditer()方法對於大型陣列以及需要更多迭代控制的情況非常有用。

更新於:2023年10月3日

149 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.