首页 > 解决方案 > 按正则表达式和标签组合的 Pandas 过滤器

问题描述

我有一些大的csv。它们可以轻松拥有超过 30 万行和 500 列。所以很明显,我喜欢在结果数据框中删除一些不需要的数据以保护资源。有一些固定标记的列,还有一些可变数量的列具有相似的标签但被编号。

example=pd.DataFrame(columns=["fix","variable 1","variable 2","waste 1","waste 2"])

我想得到所有这些变量列,我可以通过

example.filter(regex="var")

但我也想包括“修复”。由于 df.loc 不允许 regex' 并且 df.filter 只支持单个参数,有没有一种平滑的方法来做到这一点?还是我必须创建一个相当复杂的可调用对象?

提前致谢

标签: pythonpandas

解决方案


只需修改您的正则表达式以完全匹配“修复”:

df.filter(regex=r"var|(^fix$)")

Empty DataFrame
Columns: [fix, variable 1, variable 2]
Index: []

另一种选择是以Index.str.contains相同的方式使用:

df.loc[:,df.columns.str.contains(r'var|(?:^fix$)') ]

Empty DataFrame
Columns: [fix, variable 1, variable 2]
Index: []

我让该组不被捕获,否则熊猫会抱怨。


推荐阅读