for index, row in df.iterrows():
print(index)
name = row['name']
new_name = get_name(name)
row['new_name'] = new_name
df.loc[index] = row
在这段代码中,我的测试表明,最后一行使其变得非常缓慢,非常缓慢。它基本上是逐行插入新的列。也许我应该将所有“ new_name”存储到列表中,然后在循环外部更新df?
答案 0 :(得分:1)
使用Series.apply
处理列的每个值,它像iterrows
一样快:
df['new_name'] = df['name'].apply(get_name)
如果要提高性能,则有必要在可能的情况下更改功能,但这取决于功能。
答案 1 :(得分:0)
df['new_name'] = df.apply(lambda x: get_name(x) if x.name == 'name' else x)
.apply
并不是最佳实践,但是我不确定这里是否有更好的实践。