pandas Series 的 'Dict.get()' 等效方法?

5 投票
2 回答
1965 浏览
提问于 2025-04-18 12:51

有没有人知道在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

撰写回答