我有一个包含很多行的python pandas数据帧df
。从这些行中,我想切出来,只使用包含单词' ball'在'身体'柱。为此,我可以这样做:
df[df['body'].str.contains('ball')]
问题是,我希望它不区分大小写,这意味着如果Ball或bAll这个词出现,我也会想要那些。进行不区分大小写搜索的一种方法是将字符串转换为小写,然后搜索该方式。我想知道如何去做。我试过了
df[df['body'].str.lower().contains('ball')]
但这并不奏效。我不确定我是否应该在这个或那种性质的东西上使用lambda函数。
答案 0 :(得分:28)
您可以再次使用.str
来访问字符串方法,或者(更好的是,恕我直言)使用case=False
来保证不区分大小写:
>>> df = pd.DataFrame({"body": ["ball", "red BALL", "round sphere"]})
>>> df[df["body"].str.contains("ball")]
body
0 ball
>>> df[df["body"].str.lower().str.contains("ball")]
body
0 ball
1 red BALL
>>> df[df["body"].str.contains("ball", case=False)]
body
0 ball
1 red BALL
>>> df[df["body"].str.contains("ball", case=True)]
body
0 ball
(请注意,如果您要进行分配,那么使用df.loc
是一个更好的习惯,以避免可怕的SettingWithCopyWarning,但如果我们只是在这里选择它没关系。)
(注意#2:猜我真的不需要指定' round'那里......)