簡體   English   中英

有沒有辦法在循環中更快地更改 DataFrame?

[英]Is there a way to make changing DataFrame faster in a loop?

    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?

使用Series.apply為每個列值處理 function,它像iterrows一樣快:

df['new_name'] = df['name'].apply(get_name)

如果要提高性能,則有必要盡可能更改 function,但這取決於 function。

df['new_name'] = df.apply(lambda x: get_name(x) if x.name == 'name' else x)

.apply不是最佳做法,但我不確定這里是否有更好的做法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM