[英]Pandas: check column values by ignoring cases (convert cases)
I am trying to check values of a pandas column using the following condition: 我正在尝试使用以下条件检查pandas列的值:
my_df[my_df.name.str.contains('MY_TARGET')]
This works fine. 这很好用。 But since I need to convert the name column to upper case, I did the following but didn't work:
但由于我需要将name列转换为大写,我执行了以下操作但不起作用:
my_df[my_df.name.str.upper.contains('MY_TARGET')]
What's the proper way to perform the column value checks by ignoring cases? 通过忽略案例来执行列值检查的正确方法是什么? Thanks!
谢谢!
You can simply use case = False
parameter ie. 你可以简单地使用
case = False
参数即。
df = pd.DataFrame({'name': ['my_target', 'foo', 'bar', 'My_TarGet']}) #Coldspeed data
df[df['name'].str.contains('my_target', case=False)]
Output : 输出:
name 0 my_target 3 My_TarGet
I think you should use the method chain like below. 我认为你应该像下面这样使用方法链。
.uppper()
as method(parenthesis) and additional .str
accessor for the following .contains()
method. .uppper()
作为方法(括号)和以下.contains()
方法的附加.str
访问器。
my_df[my_df.name.str.upper().str.contains('MY_TARGET')]
Example 例
import pandas as pd
df = pd.DataFrame(['a'])
print(df[df[0].str.upper().str.contains('A')])
0
0 a
Option 1 选项1
Convert to upper case using df.apply(str.upper)
使用
df.apply(str.upper)
转换为大写
In [1283]: my_df = pd.DataFrame({'name': ['my_target', 'foo', 'bar', 'My_TarGet']})
In [1279]: my_df[my_df.name.apply(str.upper).str.contains('MY_TARGET')]
Out[1279]:
name
0 my_target
3 My_TarGet
For this case, you can specify regex=False
for an additional speedup. 对于这种情况,您可以指定
regex=False
以获得额外的加速。
Option 2 选项2
Use the regex flag re.I
(ignore case) with df.str.contains
( import re
first) 使用正则表达式标志
re.I
(忽略大小写)与df.str.contains
(先import re
)
In [1282]: my_df[my_df.name.str.contains('MY_TARGET', flags=re.I)]
Out[1282]:
name
0 my_target
3 My_TarGet
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.