pandas按多个值筛选列值

2024-10-03 02:37:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个列的df,如MLB,NBA,NHL,NFL,TESTNBA我想返回一个列中有字符串MLB或NBA的列表。如下所示:

df_check = ['MLB', 'NBA', 'TESTNBA']

value_cols = [col for col in df.columns if df_check in col]

上述操作失败,错误如下:

TypeError:“in”需要字符串作为左操作数,而不是列表

有没有办法按多个值筛选列?在


Tags: columns字符串indf列表forvaluecheck
2条回答

您可以使用^{}

设置

df = pd.DataFrame(columns=['MLB', 'NBA', 'NHL', 'NFL', 'TESTNBA'])    
df_check = ['MLB', 'NBA']

^{pr2}$

Index(['MLB', 'NBA', 'TESTNBA'], dtype='object')

in运算符不以矢量方式工作。对于您的逻辑,您需要将any与生成器表达式一起使用:

value_cols = [col for col in df.columns if any(i in col for i in df_check)]

更好的是,您可以使用带^{}的布尔索引。下面是一个演示:

^{pr2}$

相关问题 更多 >