python之如何过滤 Pandas 系列索引中的字符串

你猜 阅读:34 2025-02-15 21:57:57 评论:0

我试图通过在包含字符串的索引上使用 bool 表达式来过滤 Pandas 系列。例如,在下面的代码中,我希望通过为索引项包含子字符串“man”的行过滤另一个系列 (S) 来创建一个新系列 (Sman):

from pandas import Series 
S = Series({'moondog':12,'catman':23, 'batman':31, 'catdog':42}) 
Sman = S['man' in S] 

但是,Sman 的结果只是数字 31,而不是像我希望的那样包含“catman”和“batman”行的新系列。

我究竟做错了什么??

请您参考如下方法:

您可以使用 filter 方法:

In [11]: S.filter(like='man') 
Out[11]: 
batman    31 
catman    23 
dtype: int64 

手动替代方法是:
In [12]: S[['man' in i for i in S.index]] 
Out[12]: 
batman    31 
catman    23 
dtype: int64 

您的方法不起作用的原因是 'man' in S刚刚返回 False ,因为这会检查索引中是否包含确切的标签“man”(事实并非如此)。


标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号