返回

逐行遍历 Pandas DataFrame 数据的技巧

后端

Pandas 数据分析面试基础题(七):遍历 DataFrame 数据的技巧

对于 Python 开发者来说,Pandas 是一个强大的数据操作工具。在对 DataFrame 进行操作时,我们不可避免地需要逐行查看或操作数据。理解如何有效地遍历 DataFrame 数据对于实现自动化任务和提取见解至关重要。

使用 iterrows() 方法

iterrows() 方法是一种简单且通用的方法,用于逐行迭代 DataFrame。它返回一个元组,其中包含行索引和行的 Series 表示形式。

import pandas as pd

df = pd.DataFrame({'Name': ['John', 'Mary', 'Bob'],
                   'Age': [20, 25, 30]})

for index, row in df.iterrows():
    print(f"Index: {index}, Name: {row['Name']}, Age: {row['Age']}")

使用 itertuples() 方法

itertuples() 方法类似于 iterrows(),但它返回一个 NamedTuple 对象,其中包含行索引和行的每个值。

for row in df.itertuples():
    print(f"Index: {row.Index}, Name: {row.Name}, Age: {row.Age}")

使用 apply() 方法

apply() 方法允许您对 DataFrame 的每一行应用函数。您可以传递一个函数,该函数将接收一行作为输入并返回一个值。

def get_name_and_age(row):
    return f"{row['Name']} is {row['Age']} years old."

df.apply(get_name_and_age, axis=1)

使用 applymap() 方法

applymap() 方法类似于 apply(),但它逐个元素应用函数。这对于执行字符串操作或数学运算等任务非常有用。

def uppercase_names(name):
    return name.upper()

df['Name'] = df['Name'].applymap(uppercase_names)

使用 for 循环和 iloc[]

您可以使用 for 循环和 iloc[] 逐行访问 DataFrame。iloc[] 方法使用整数索引来选择行和列。

for i in range(len(df)):
    print(f"Index: {i}, Name: {df.iloc[i, 0]}, Age: {df.iloc[i, 1]}")

结论

掌握遍历 DataFrame 数据的技巧对于有效地使用 Pandas 进行数据分析至关重要。通过使用 iterrows()、itertuples()、apply()、applymap() 和 for 循环,您可以轻松地执行各种操作,例如筛选、过滤和转换数据。了解这些方法将使您能够编写高效、可读的代码,从而从数据中提取有意义的见解。