如何用Pandas原生方法按指定索引取值,不存在则填充默认值?
Pandas原生实现指定索引取值并填充NaN
当然有,Pandas提供了简洁的原生方法来满足你的需求,以下是两种实用方案:
方法一:reindex()(最优解)
reindex()是Pandas专门用于调整索引的方法,默认会给不存在的索引填充NaN,完全匹配你的需求:
import pandas as pd import numpy as np ts = pd.Series({'a' : 1, 'b' : 2}) ids = ['a','c'] # 生成目标Series后转成numpy数组,和你原来的输出一致 result = ts.reindex(ids).to_numpy() print(result) # 输出: [ 1. nan]
如果需要自定义填充值,还可以通过fill_value参数设置,比如ts.reindex(ids, fill_value=0)会把缺失值填充为0。
方法二:基于get()的批量实现
如果你习惯用get()的逻辑,也可以用map()批量处理,本质是对ids列表的每个元素应用ts.get(k, np.nan):
result = np.array(pd.Series(ids).map(lambda k: ts.get(k, np.nan)))
不过这种方式性能不如reindex(),数据量较大时优先选第一种方法。
内容的提问来源于stack exchange,提问作者jf328
相关产品推荐
相关产品推荐

