在 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
解释
在上面的程序中,我们创建了一个数据框,其中包含 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() 方法对于大型数组以及需要更多迭代控制的情况很有用。