正则表达式OR用法及DataFrame列筛选异常问题求助
解决DataFrame列筛选问题:同时匹配以p开头或包含s的列
问题原因
你原来的代码里用'(^p)' or '(s)'是Python的逻辑或运算,由于'(^p)'是非空字符串(被视为True),所以整个表达式的结果就是'(^p)',自然只会筛选以p开头的列,不会匹配包含s的列。
修正方案
正则表达式里的“或”需要用|符号来表示,而非Python的or关键字。正确的正则表达式可以写成'^p|s'(或者更明确的'(^p)|(s)'),这样就能同时匹配两类列:
^p:匹配以p开头的列名s:匹配包含s的列名
示例代码
import pandas as pd # 构造测试DataFrame df = pd.DataFrame({ 'price': [100, 200], 'product': ['A', 'B'], 'sales': [50, 60], 'total': [150, 260] }) # 正确的筛选代码 df2 = df.filter(regex='^p|s') print(df2)
运行后会输出包含price、product、sales的列,完全符合需求。
内容的提问来源于stack exchange,提问作者DJC78
相关产品推荐
相关产品推荐

