如何用索引-值字典替换pandas Series对应索引数值,有无内置方法
按字典匹配索引更新Pandas Series的最优方法
你要的功能可以直接用pandas内置的Series.update()方法实现,这是专门针对此类索引匹配更新场景设计的接口,比手动loc赋值更安全简洁。
实现代码
首先是示例数据构造:
import pandas as pd import numpy as np s = pd.Series(np.arange(10), index=pd.date_range('2021-01-01', periods=10, freq='D')) d = {pd.Timestamp('2021-01-01'):-1, pd.Timestamp('2021-01-05'):-2}
直接调用update方法即可完成替换:
# pandas 0.24及以上版本支持直接传入字典 s.update(d) # 兼容所有版本的写法,先把字典转为Series再更新 # s.update(pd.Series(d))
方法优势
- 完全按索引匹配:不需要担心字典键的顺序问题,不会出现原
loc赋值写法可能因顺序错位导致的赋值错误 - 行为符合需求:仅更新原Series中索引存在于字典里的条目,字典中多余的索引会被自动忽略,不会新增行
- 性能更优:内置方法经过优化,数据量较大时效率明显高于手动索引赋值
注意:Series.update()是原地操作,会直接修改原Series,如果需要保留原始数据,请先调用.copy()方法拷贝副本后再执行更新操作
内容的提问来源于stack exchange,提问作者Eyal S.
相关产品推荐
相关产品推荐

