看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
iterrows()
方法用于逐行迭代 DataFrame,每次迭代返回一个 (index, Series) 元组,其中 index
是行标签,Series
包含行的数据。
DataFrame.iterrows()
iterrows()
方法没有参数。
iterrows()
通常用于需要逐行处理 DataFrame 的情况,比如数据清洗、特定计算等。虽然它简单易用,但在处理大型 DataFrame 时,iterrows()
的性能可能不如向量化操作,因此需要谨慎使用。
构造一个简单的 DataFrame,并逐行打印每行数据。
import pandas as pd
# 构造示例数据
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print("DataFrame:")
print(df)
# 使用 iterrows() 逐行迭代
for index, row in df.iterrows():
print(f"Index: {index}")
print(f"Row data:\n{row}\n")
输出结果:
DataFrame:
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
Index: 0
Row data:
Name Alice
Age 25
City New York
Name: 0, dtype: object
Index: 1
Row data:
Name Bob
Age 30
City Los Angeles
Name: 1, dtype: object
Index: 2
Row data:
Name Charlie
Age 35
City Chicago
Name: 2, dtype: object
在迭代过程中对数据进行处理,比如将所有名字改为大写。
import pandas as pd
# 构造示例数据
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
# 使用 iterrows() 修改数据
for index, row in df.iterrows():
df.at[index, 'Name'] = row['Name'].upper()
print("Modified DataFrame:")
print(df)
输出结果:
Modified DataFrame:
Name Age City
0 ALICE 25 New York
1 BOB 30 Los Angeles
2 CHARLIE 35 Chicago
在迭代过程中计算一个新列,例如根据年龄计算出生年份。
import pandas as pd
# 构造示例数据
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
# 使用 iterrows() 计算新列
current_year = 2024
df['Birth Year'] = None
for index, row in df.iterrows():
df.at[index, 'Birth Year'] = current_year - row['Age']
print("DataFrame with Birth Year:")
print(df)
输出结果:
DataFrame with Birth Year:
Name Age City Birth Year
0 Alice 25 New York 1999
1 Bob 30 Los Angeles 1994
2 Charlie 35 Chicago 1989
iterrows()
方法返回的是每行的副本而不是视图,所以对返回的 Series 进行修改不会影响原始 DataFrame。iterrows()
的性能较差,特别是在大型 DataFrame 上。因此,对于大规模数据处理,应尽量使用向量化操作或其他更高效的方法。通过这些示例,逐步展示了 iterrows()
的基本用法和一些实际应用场景,从而更好地理解和掌握这个方法。
更新时间:July 19, 2024, 9:22 p.m. 标签:pandas python iterrows 迭代