DataFrame.iterrows(self) [source]
将DataFrame行作为(索引,Series)对进行迭代。
Yields: | index : 标签或标签元组 行的索引。 data : 行的数据为 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()
会非常慢。在这种情况下,尽量避免逐行遍历,尝试使用矢量化方法。