开始使用免费开始使用

添加列(2)

使用 iterrows() 遍历 pandas DataFrame 的每一条观测容易理解,但效率不高。每次迭代都会创建一个新的 pandas Series。

如果您想通过对另一列调用函数来为 DataFrame 添加一列,将 iterrows()for 循环组合并不是首选做法。更好的方式是使用 apply()

对比在 brics DataFrame 中得到相同结果的 iterrows() 版本和 apply() 版本:

for lab, row in brics.iterrows() :
    brics.loc[lab, "name_length"] = len(row["country"])

brics["name_length"] = brics["country"].apply(len)

我们也可以用类似的方法对 country 列中的每个名称调用 upper() 方法。不过,upper() 是一个方法,因此需要稍作调整:

本练习是课程的一部分

Python 中级

查看课程

练习说明

  • 用一行 .apply(str.upper) 来替换 for 循环。结果应相同:在 cars 中添加一列 COUNTRY,其内容为国家名称的大写形式。
  • 和往常一样,打印 cars,查看您的成果。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)

# Use .apply(str.upper)
for lab, row in cars.iterrows() :
    cars.loc[lab, "COUNTRY"] = row["country"].upper()
编辑并运行代码