pandas
是一个强大的数据处理库,通常用于数据分析和操作。iterrows()
和 apply()
是 pandas
中用于遍历数据框(DataFrame)的两种常用方法。iterrows()
是一个生成器,每次迭代返回一个元组,包含索引和行数据(作为 Series)。apply()
则是对数据框或系列应用函数的方法。
如果你想要替换 iterrows()
使用 apply()
,通常是因为 apply()
在某些情况下更高效,尤其是在使用向量化操作时。以下是如何使用 apply()
替换 iterrows()
的示例:
假设我们有一个数据框 df
,其中有一列 price
,我们想要将价格大于 100 的行的 status
列设置为 'expensive',否则设置为 'cheap'。
iterrows()
import pandas as pd
# 创建示例数据框
df = pd.DataFrame({
'price': [90, 110, 150, 80],
'status': [''] * 4
})
# 使用 iterrows()
for index, row in df.iterrows():
if row['price'] > 100:
df.at[index, 'status'] = 'expensive'
else:
df.at[index, 'status'] = 'cheap'
print(df)
apply()
import pandas as pd
# 创建示例数据框
df = pd.DataFrame({
'price': [90, 110, 150, 80],
'status': [''] * 4
})
# 定义一个函数来设置状态
def set_status(row):
if row['price'] > 100:
return 'expensive'
else:
return 'cheap'
# 使用 apply()
df['status'] = df.apply(set_status, axis=1)
print(df)
apply()
通常比 iterrows()
更快,尤其是在使用向量化操作时。apply()
可以使代码更简洁,更容易理解。如果你在使用 apply()
时遇到性能问题,可以考虑以下几点:
pandas
内置的向量化函数,如 df[df['price'] > 100]['status'] = 'expensive'
。apply()
的函数是高效的。pandas
的并行处理功能,如 swifter
库。通过这些方法,你可以有效地使用 apply()
替换 iterrows()
,从而提高代码的性能和可读性。
领取专属 10元无门槛券
手把手带您无忧上云