有没有人知道 pandas Series 中是否有类似于 Dict.get()
方法的等效方法?我有一个看起来像这样的系列:
In [25]: s1
Out[25]:
a 1
b 2
c 3
dtype: int64
如果我试图访问不存在的索引,比如'z',我希望能返回一个默认值,比如0。例如,我想让
s1.ix['z']
返回0
而不是KeyError
。我知道pandas在处理其他情况下的缺失值方面有很好的支持,但我找不到有关这个问题的具体信息。谢谢!
有没有人知道 pandas Series 中是否有类似于 Dict.get()
方法的等效方法?我有一个看起来像这样的系列:
In [25]: s1
Out[25]:
a 1
b 2
c 3
dtype: int64
s1.ix['z']
返回0
而不是KeyError
。我知道pandas在处理其他情况下的缺失值方面有很好的支持,但我找不到有关这个问题的具体信息。如评论所述,pandas直接为Series实现了get
方法。
因此,s1.get('x', 0)
将返回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
s.get('z', 0)
应该可以做到这一点,但是pandas
中存在一个错误..它只捕获KeyErrors和ValueErrors,而不是IndexErrors。 :-/ 我将提交一个pull请求.. - DSMs1.get('z', 0)
在版本0.14.0中可以正常工作(它会捕获KeyError和ValueError异常)。 - unutbus.get(3, 0)
(使用OP的Series)。 - DSM