有没有一种方法可以使循环中更快地更改DataFrame?

时间:2020-05-04 08:15:26

标签: python pandas dataframe

    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?

2 个答案:

答案 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并不是最佳实践,但是我不确定这里是否有更好的实践。