Skip to main content
 首页 » 编程设计

python之过滤 Pandas DataFrame时如何使用lower()方法

2025年05月04日14Renyi-Fan

             0         1         2         3         4         5 
word                                                             
</s>  0.001129 -0.000896  0.000319  0.001534  0.001106 -0.001404 
in    0.070312  0.086914  0.087891  0.062500  0.069336 -0.108887 
for  -0.011780 -0.047363  0.044678  0.063477 -0.018188 -0.063965 
that -0.015747 -0.028320  0.083496  0.050293 -0.110352  0.031738 
is    0.007050 -0.073242  0.171875  0.022583 -0.132812  0.198242 

我有这个 DataFrame,我想获取索引(“word”)包含特定字符串(大小写不变)的行。我试过了

df[df.index.str.lower().contains("lebron") == True] 

它给出了 KeyError: False。虽然

df[df.index.str.contains("Lebron") == True] 

工作正常。

在这种情况下如何使用lower()?

请您参考如下方法:

如果您正在执行简单的子字符串检查,建议不要使用正则表达式比较(即,不要将 str.lower 与正则表达式一起使用)。您可以在此处使用列表理解:

df[['lebron' in x.lower() for x in df.index]] 

如果索引中可能出现 NaN,您可以修改解决方案来处理它们:

df[[pd.notna(x) and 'lebron' in x.lower() for x in df.index]] 

没有正则表达式,可以相应地使用str.contains:

df[df.index.str.lower().str.contains("lebron", regex=False)] 

如果您没有 NaN,则可以省略尾随 == True。否则,

df[df.index.str.lower().str.contains("lebron", regex=False) == True] 

将正常工作。