📜  在 Pandas Dataframe 中迭代行的不同方法(1)

📅  最后修改于: 2023-12-03 15:07:45.257000             🧑  作者: Mango

在 Pandas Dataframe 中迭代行的不同方法

在 Pandas 中,我们经常需要处理 Dataframe 中的行数据。本文将介绍迭代 Pandas Dataframe 行的不同方法。

我们先构造一个示例数据集:

import pandas as pd

df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie'], 
                   'Age': [25, 30, 35], 
                   'Gender': ['F', 'M', 'M']})

这个示例数据集包含了三列:Name、Age 和 Gender,分别表示名字、年龄和性别。现在我们要迭代这个数据集中的行数据。

方法一:使用 iterrows()

iterrows() 方法可以遍历 Pandas Dataframe 中的每一行,并且返回每一行的 index 和数据。我们可以通过解包的方式来获取 index 和数据:

for index, row in df.iterrows():
    print(index, row['Name'], row['Age'], row['Gender'])

输出结果为:

0 Alice 25 F
1 Bob 30 M
2 Charlie 35 M

需要注意的是,iterrows() 方法返回的是一个迭代器,所以在遍历 Dataframe 的时候,需要使用 for 循环来逐行处理数据。

方法二:使用 itertuples()

itertuples() 方法返回一个命名元组,其中包含了每一行的数据。我们可以通过解包的方式来获取这些数据字段:

for row in df.itertuples():
    print(row.Index, row.Name, row.Age, row.Gender)

输出结果为:

0 Alice 25 F
1 Bob 30 M
2 Charlie 35 M

需要注意的是,返回的命名元组中包含了 Index 字段,也就是每一行的索引值。

方法三:使用 iterrows() 和 zip()

我们还可以结合使用 iterrows()zip() 方法来遍历 Pandas Dataframe 中的每一行:

for Name, Age, Gender in zip(df['Name'], df['Age'], df['Gender']):
    print(Name, Age, Gender)

输出结果为:

Alice 25 F
Bob 30 M
Charlie 35 M

需要注意的是,我们可以通过访问 df[column_name] 的方式来获取某一列的数据。

方法四:使用 apply() 和 lambda 函数

最后,我们还可以使用 apply() 方法结合 lambda 函数来遍历 Pandas Dataframe 中的每一个行:

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

输出结果为:

Alice 25 F
Bob 30 M
Charlie 35 M

需要注意的是,apply() 方法是对 DataFrame 或者某一行/列进行操作的函数,它可以接收一个 lambda 函数作为参数,其中 axis=1 表示对行进行操作。