如何通过字典映射快速更新Pandas DataFrame的stockID列
高效实现方案
你原来的代码运行慢是因为用了iterrows()逐行遍历,属于Python级别的循环操作,数据量较大时性能损耗非常高。Pandas内置的向量化操作可以完美替代这种循环场景,以下是最优实现:
直接用Series.map()方法完成字典映射,一行代码即可:
df['stockID'] = df['level_1'].map(stockDict)
如果存在部分level_1的股票代码不在映射字典中的情况,上述代码会把对应行的stockID设为NaN,如果你想保留这些行原来的stockID值(比如示例里的默认值0),可以加一步填充:
df['stockID'] = df['level_1'].map(stockDict).fillna(df['stockID']).astype(int)
这种向量化操作是在C层面执行的,对于2万行左右的数据,执行耗时基本在毫秒级,相比iterrows()的遍历方案性能提升可达数百倍。
内容的提问来源于stack exchange,提问作者Rapid1898
相关产品推荐
相关产品推荐

