pandas Series 的 'Dict.get()' 等效方法?
有没有人知道在pandas的Series中,是否有类似于Dict.get()
方法的功能?我有一个Series,长得像这样:
In [25]: s1
Out[25]:
a 1
b 2
c 3
dtype: int64
我想要的是,如果我试图访问一个不存在的索引,能返回一个默认值,比如0。举个例子,我希望s1.ix['z']
能返回0
,而不是出现KeyError
的错误。我知道pandas在处理其他情况下的缺失值方面做得很好,但我找不到关于这个特定问题的解决方案。
谢谢大家!
2 个回答
0
我看不懂之前的回答,因为没有提到你用作来源的字典。这里是我的回答,至少对我来说是有效的。
In[12]: s1 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'z'])
my_dict = {'a': 1, 'b': 2, 'c': 3}
result = s1.index.map(my_dict).fillna(0)
new_series = pd.Series(result, index=s1.index)
new_series
Out[13]:
a 1.0
b 2.0
c 3.0
z 0.0
dtype: float64
4
正如评论中提到的,pandas库直接为Series实现了一个叫做get
的方法。
所以当你写s1.get('x', 0)
的时候,如果's1'里面没有'x'这个值,它就会返回0
。