我有一个 DataFrame,其中的列是 MultiIndex,索引是名称列表,即 index=['Andrew', 'Bob', 'Calvin',...]
。
我想创建一个函数来返回数据框中所有使用名称“Bob”或以字母“A”开头或以小写字母开头的行。如何做到这一点?
我用正则表达式参数查看了 df.filter()
,但它失败了,我得到:
df.filter(regex='a')
TypeError: expected string or buffer
或:
df.filter(regex=('a',1)
TypeError: first argument must be string or compiled pattern
我已经尝试过其他方法,例如传递 re.compile('a')
无济于事。
最佳答案
看来我的 filter
问题的一部分是我使用的是过时版本的 pandas。更新后,我不再收到 TypeError
。经过一番尝试后,看起来我可以使用 filter
来满足我的需要。这是我的发现。
只需设置 df.filter(regex='string')
即可返回与正则表达式匹配的列。这看起来与 df.filter(regex='string', axis=1)
相同。
要搜索索引,我只需执行 df.filter(regex='string', axis=0)
关于python - Pandas - 过滤和正则表达式搜索 DataFrame 的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35638377/