添加列(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()