小编典典

在pandas中,如何根据值的类型过滤系列?

python

给个Series喜欢

import pandas as pd

s = pd.Series(['foo', 'bar', 42])

我想获得一个“子系列” pd.Series(['foo', 'bar']),其中所有值都是字符串。我已经尝试过像这样的布尔索引:

s[isinstance(s, str)]

但这给了

KeyError:错误

到目前为止,在寻找合适的方法时,我遇到了select,但这在标签上强加了一个标准,而不是值。在这种情况下,如何基于值的类型进行过滤?


阅读 128

收藏
2020-12-20

共1个答案

小编典典

使用apply或列出理解:

s[s.apply(lambda x: isinstance(x, str))]

一样,谢谢Jon Clements♦

s[s.apply(isinstance, args=(str,))]

s[[isinstance(x, str) for x in s]]

全部返回:

0    foo
1    bar
dtype: object

编辑:

不推荐这样做,谢谢cᴏʟᴅsᴘᴇᴇᴅ:

s[s.apply(type) == str]
2020-12-20