有没有更好的方法来替换 python 中的"for"循环?



有人能帮帮我吗?

我有一个巨大的数据框架工作(9万行),我需要应用这个逻辑,但我只能想到解决问题使用'for'循环,这需要近2个小时的运行…有人能告诉我如何优化代码吗?

逻辑如下:对于每个"Customer",我需要检查他的"FinalKey"是否存在于"Key"列中。如果存在,则该客户的"Final Name"将与"Key"中相同的"FinalKey"中"customer"中重复次数最多的名称相同。下面是一个例子:


创建数据框df
data = [['Tom','123', '123'], ['Tom', '54', '123'], 
['Tom', '21', '123'], ['Tom2', '123', '123'], 
['Tom3', '123', '123'], ['Tom3', '123', '123'], 
['John', '45', '45'], ['Mary', '23', '41']]
df = pd.DataFrame(data, columns=['Customer', 'Key', 'FinalKey'])
df['Final Name']=''
<标题>打印dataframe h1> df

tbody> <<tr><汤姆td>汤姆汤姆约翰玛丽
CustomerKeyFinalKeyFinal Name
123123
54123
21123
Tom2123123
Tom3123123
Tom3123123
4545
4141

我相信有更好的方法,但这是可行的:

top_cust_by_key = df[['Key', 'Customer']].groupby('Key').agg(lambda x: x.value_counts().index[0])['Customer']
df['Final Name'] = df['FinalKey'].map(top_cust_by_key)

最新更新