Python pandas.DataFrame.iterrows函数方法的使用

pandas.DataFrame.iterrows() 是 Pandas 库中的一个方法,它允许逐行遍历 DataFrame。该方法返回每一行的索引和对应的数据(作为 Series 对象)。这个方法常用于需要逐行处理数据的情况,但它的性能较低,不推荐用于处理大数据集的场景,因为每次访问行时都会将数据转换为一个 Series 对象,效率较低。本文主要介绍一下Pandas中pandas.DataFrame.iterrows方法的使用。

DataFrame.iterrows(self)               [source]

将DataFrame行作为(索引,Series)对进行迭代。

Yields:

index :  标签或标签元组

行的索引。MultiIndex的元组。

data : Series

行的数据为Series.

it : generator

遍历框架行的生成器。

Notes

1)基础使用

import pandas as pd

# 创建一个简单的 DataFrame
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
})

# 使用 iterrows() 逐行遍历 DataFrame
for index, row in df.iterrows():
    print(f"Index: {index}, Name: {row['Name']}")
    print(F"Age: {row['Age']}, City: {row['City']}")

2)修改 DataFrame 中的值

import pandas as pd

# 创建一个简单的 DataFrame
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
})

# 使用 iterrows() 逐行遍历并修改年龄
for index, row in df.iterrows():
    df.at[index, 'Age'] = row['Age'] + 1  # 将每个人的年龄加 1

print(df)

3)条件过滤与修改

import pandas as pd

# 创建一个简单的 DataFrame
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
})

# 使用 iterrows() 逐行遍历并修改
for index, row in df.iterrows():
    if row['City'] == 'New York':
        # 如果城市是 'New York',设置年龄为 40
        df.at[index, 'Age'] = 40  

print(df)

注意:

1)性能问题

iterrows() 的效率比较低,因为它每次返回一个 Series 对象。如果需要高效的处理数据,建议避免使用 iterrows(),可以考虑使用 apply() 或者矢量化操作,这些方法通常更快。

2)数据类型

在使用 iterrows() 时,返回的每一行是一个 Series 对象,这意味着你不能直接修改原 DataFrame 中的值(除非通过 .at[].iat[])。

3)不推荐用于大数据集

如果 DataFrame 很大,iterrows() 会非常慢。在这种情况下,尽量避免逐行遍历,尝试使用矢量化方法。

推荐阅读
cjavapy编程之路首页