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()
会非常慢。在这种情况下,尽量避免逐行遍历,尝试使用矢量化方法。