Pandas 如何在DataFrame中迭代行

Pandas 如何在DataFrame中迭代行

在本文中,我们将介绍如何使用Pandas来迭代DataFrame中的行。作为数据科学家,我们常常需要在DataFrame中进行某些行级别的操作,如对每行数据进行计算、过滤、预处理等等操作,而我们需要一种快速且高效的方法来迭代DataFrame中的所有行。

阅读更多:Pandas 教程

使用iterrows方法迭代行

Pandas提供了许多方法来迭代DataFrame中的行,其中最常用的一种方法是使用iterrows方法。iterrows方法可以让我们逐行地迭代DataFrame,并将每一行数据转换为一个元组。下面我们先通过一个简单的例子来了解iterrows方法:

import pandas as pd

# 创建一个DataFrame对象
data = [['Alex', 10], ['Bob', 12], ['Clarke', 13]]
df = pd.DataFrame(data, columns=['Name', 'Age'])

# 使用iterrows方法迭代DataFrame中的行
for index, row in df.iterrows():
    print(row['Name'], row['Age'])

输出结果如下:

Alex 10
Bob 12
Clarke 13

从上述代码可以看出,我们首先使用pandas的DataFrame对象创建了一个简单的数据集,然后使用iterrows方法迭代了每一行数据,并将每一行数据转换为一个元组(即index, row)。我们可以通过元组来访问每一行数据中的每一列。

值得注意的是,在使用iterrows方法迭代DataFrame时,它会返回行索引和包含行数据的Series对象,而不是原始的DataFrame对象。因此,如果需要修改DataFrame中的值或者对整个DataFrame进行操作,则需要使用pandas的at或iat属性来操作。

使用itertuples方法迭代行

除了iterrows方法之外,Pandas还提供了另外一种迭代方法,即itertuples方法。与iterrows方法不同的是,itertuples方法返回的是一个包含每一行数据的命名元组,而不是包含每一行数据的Series对象,这使得itertuples方法比iterrows方法更适合用于高性能计算。

下面我们通过一个简单的例子来了解itertuples方法:

import pandas as pd

# 创建一个DataFrame对象
data = [['Alex', 10], ['Bob', 12], ['Clarke', 13]]
df = pd.DataFrame(data, columns=['Name', 'Age'])

# 使用itertuples方法迭代DataFrame中的行
for row in df.itertuples():
    print(row.Name, row.Age)

输出结果如下:

Alex 10
Bob 12
Clarke 13

从上述代码可以看出,我们首先使用pandas的DataFrame对象创建了一个简单的数据集,然后使用itertuples方法迭代了每一行数据,并将每一行数据转换为一个命名元组。我们可以通过命名元组来访问每一行数据中的每一列。

使用apply方法迭代行

除了使用iterrows方法和itertuples方法迭代DataFrame中的行之外,我们还可以使用apply方法来迭代行。apply方法是Pandas中的一个非常实用的函数,它可以对每一行数据进行自定义处理,并将处理结果逐一返回。下面我们通过一个简单的例子来了解apply方法:

import pandas as pd

# 创建一个DataFrame对象
data = [['Alex', 10], ['Bob', 12], ['Clarke', 13]]
df = pd.DataFrame(data, columns=['Name', 'Age'])

# 使用apply方法迭代DataFrame中的行
def func(row):
    if row['Age'] > 10:
        return 'Yes'
    else:
        return 'No'

df['is_adult'] = df.apply(func, axis=1)
print(df)

输出结果如下:

     Name  Age is_adult
0    Alex   10       No
1     Bob   12      Yes
2  Clarke   13      Yes

从上述代码可以看出,我们首先使用pandas的DataFrame对象创建了一个简单的数据集,然后使用apply方法对每一行数据进行处理,并将处理结果新增为一个新的列is_adult。在apply方法中,我们定义了一个自定义函数func,该函数判断每一行数据中Age列的值是否大于10,如果大于10则返回’Yes’,否则返回’No’。然后使用df[‘is_adult’] = df.apply(func, axis=1)将处理结果添加为新的一列。

需要注意的是,apply方法的axis参数默认为0,表示按列进行处理,而axis=1表示按行进行处理,所以我们使用axis=1来对每一行数据进行自定义处理并返回处理结果。

总结

通过本文的介绍,我们了解了如何使用iterrows方法、itertuples方法和apply方法来迭代Pandas中的DataFrame中的行。iterrows方法和itertuples方法返回的分别是包含每一行数据的Series对象和命名元组,而apply方法则允许我们对每一行数据进行自定义处理。在实际应用中,我们可以根据需求来选择使用合适的行迭代方法来处理DataFrame中的数据,并可以根据实际情况进行调整以达到最佳性能。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程