在 Pandas DataFrame 中迭代行和列。

pythonserver side programmingprogramming更新于 2023/8/31 18:50:00

在本文中,我们将了解 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 

解释

在上面的程序中,我们创建了一个数据框,其中包含 Name、Age、Roll 和 Game 等列。我们使用 iterrows() 方法,该方法允许我们迭代数据框并返回 rows 作为包含索引和行数据的元组。最后,我们打印迭代后获得的数据。

方法 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 

解释

在上面的程序中,我们创建了一个数据框,其中包含 Name、Age、Roll 和 Game 等列。我们使用 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

解释

在上面的程序中,我们创建了一个包含 Name、Age、Roll 和 Game 等列的数据框。我们使用 apply() 函数,该函数允许我们在数据框的每一行上应用自定义函数。当我们写入 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

解释

在上面的程序中,我们创建了包含 Name、Age、Roll 和 Game 等列的数据框。我们使用 apply() 函数,该函数允许我们在数据框的每一列上应用自定义函数。当我们写入 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

解释

在上面的程序中,我们创建了一个包含 Name、Age、Roll 和 Game 等列的数据框。我们使用 lambda 函数和 apply() 方法对数据框中的行进行高效迭代。

因此,我们了解了各种方法,可以使用这些方法在 Pandas DataFrame 中迭代行和列。虽然在最后一种方法中,与 iterrows()、itertuples() 或 apply() 等其他方法相比,nditer() 并不总是合适的。nditer() 方法对于大型数组以及需要更多迭代控制的情况很有用。


相关文章