Skip to main content
 首页 » 编程设计

python之按正则表达式和标签组合的 Pandas 过滤器

2024年11月24日3598°冷暖

我有一些大的 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 只支持一个参数,有没有一种平滑的方法来做到这一点?还是我必须创建一个非常复杂的可调用对象?

提前致谢

请您参考如下方法:

只需修改您的正则表达式即可完全匹配“fix”:

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: [] 

我让组不捕获,否则 pandas 会提示。