在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.