[英]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.