pandas|判断是否包含|contains|isin

1. 方法简介

1.1 pandas.Series.str.contains

str.contains
Series.str.contains(pat,case = True,flags = 0,na = nan,regex = True)

  • 函数作用
    测试pattern或regex是否包含在Series或Index的字符串中。
    返回布尔值系列或索引,具体取决于给定模式或正则表达式是否包含在系列或索引的字符串中。
  • pat : str类型
    字符序列或正则表达式。
  • case : bool,默认为True
    如果为True,区分大小写。
  • flags : int,默认为0(无标志)
    标志传递到re模块,例如re.IGNORECASE。
  • na : 默认NaN
    填写缺失值的值。
    na = True 就表示把有NAN的转换为布尔值True
    na = False 就表示把有NAN的转换为布尔值False
  • regex : bool,默认为True
    如果为True,则假定pat是正则表达式。
    如果为False,则将pat视为文字字符串。
  • 返回:
    布尔值的系列或索引
    布尔值的Series或Index,指示给定模式是否包含在Series或Index的每个元素的字符串中。

1.2 pandas.DataFrame.isin

pd.isin

  • 函数作用
    Pandas isin()方法用于过滤数据帧。isin()方法有助于选择在特定列中具有特定(或多个)值的行。
  • 用法:DataFrame.isin(values)
  • 参数:
    values:Iterable,Series,List,Tuple,DataFrame或字典以检入调用方的Series /Data Frame。
  • 返回类型:维度布尔值的DataFrame。

2. 示例1

# Returning a Series of booleans using only a literal pattern.
s1 = pd.Series(['Mouse', 'dog', 'house and parrot', '23', np.nan])
s1.str.contains('og', regex=False)
0    False
1     True
2    False
3    False
4      NaN
dtype: object
#Returning an Index of booleans using only a literal pattern.
ind = pd.Index(['Mouse', 'dog', 'house and parrot', '23.0', np.nan])
ind.str.contains('23', regex=False)
Index([False, False, False, True, nan], dtype='object')
# case区分大小写,regex使用正则
s1.str.contains('oG', case=True, regex=True)
0    False
1    False
2    False
3    False
4      NaN
dtype: object
# nan值判定为False
s1.str.contains('og', na=False, regex=True)
0    False
1     True
2    False
3    False
4    False
dtype: bool
# 使用正则
s1.str.contains('house|dog', regex=True)
0    False
1     True
2     True
3    False
4      NaN
dtype: object
# Ignoring case sensitivity using flags with regex.
import re
s1.str.contains('PARROT', flags=re.IGNORECASE, regex=True)
0    False
1    False
2     True
3    False
4      NaN
dtype: object

3. 示例2

df = pd.DataFrame({'name': ['悟空','唐僧','八戒','沙僧','白龙马'], 
                   'age': [1000,33,800,700,500],
                  '兵器': ['金箍棒',np.nan, '九齿钉耙','降妖宝杖','龙泉宝剑'],
                  '力量':[100.0, 10.0, 60.0, 50.0, np.nan]}, 
                  index=['a', 'b', 'c', 'd','e'])
df
nameage兵器力量
a悟空1000金箍棒100.0
b唐僧33NaN10.0
c八戒800九齿钉耙60.0
d沙僧700降妖宝杖50.0
e白龙马500龙泉宝剑NaN
# 当值为列表时,检查DataFrame中的每个值是否都存在于列表中
df.isin([1000, 33])
nameage兵器力量
aFalseTrueFalseFalse
bFalseTrueFalseFalse
cFalseFalseFalseFalse
dFalseFalseFalseFalse
eFalseFalseFalseFalse
~df.isin([1000, 33])
nameage兵器力量
aTrueFalseTrueTrue
bTrueFalseTrueTrue
cTrueTrueTrueTrue
dTrueTrueTrueTrue
eTrueTrueTrueTrue
# 当值是dict时,我们可以分别传递值来检查每列
df.isin({'兵器': ['金箍棒', '九齿钉耙']})
nameage兵器力量
aFalseFalseTrueFalse
bFalseFalseFalseFalse
cFalseFalseTrueFalse
dFalseFalseFalseFalse
eFalseFalseFalseFalse
# 当值为Series或DataFrame时,索引和列必须匹配。
other = pd.DataFrame({'name': ['悟空', '-'], 'age': [1000, 33], '兵器': ['金箍棒', '-'], '力量': [100.0, 10.0]}, index=['a', 'b'])
df.isin(other)
nameage兵器力量
aTrueTrueTrueTrue
bFalseTrueFalseTrue
cFalseFalseFalseFalse
dFalseFalseFalseFalse
eFalseFalseFalseFalse
names = ['悟空', '八戒', '沙僧']
names = '|'.join(names)
names
'悟空|八戒|沙僧'
df['name'].str.contains(names, regex=True)
a     True
b    False
c     True
d     True
e    False
Name: name, dtype: bool
df[df['name'].str.contains(names, regex=True)]
nameage兵器力量
a悟空1000金箍棒100.0
c八戒800九齿钉耙60.0
d沙僧700降妖宝杖50.0

4. 相关文章

(1) pandas分组聚合|agg|transform|apply

pandas分组聚合|agg|transform|apply

(2) 缺省值判断 pd.isnull, pd.isna, pd.notna, pd.notnull, np.isnan, math.isnan 区别

缺省值判断 pd.isnull, pd.isna, pd.notna, pd.notnull, np.isnan, math.isnan 区别

(3) pandas中DataFrame字典互转

pandas中DataFrame字典互转

(4) pandas.concat实现DataFrame竖着拼接、横着拼接

pandas.concat实现DataFrame竖着拼接、横着拼接

(5) pandas|找出某列最大值的所在的行

pandas|找出某列最大值的所在的行

(6) DataFrame——指定位置增加删除一行一列

DataFrame——指定位置增加删除一行一列

(7) AttributeError: module ‘pandas‘ has no attribute ‘isna‘

AttributeError: module ‘pandas‘ has no attribute ‘isna‘

(8) pandas–Series.str–字符串处理

pandas–Series.str–字符串处理

(9) list、ndarry、Series、DataFrame的创建、索引和选取

list、ndarry、Series、DataFrame的创建、索引和选取

(10) Series和DataFrame复合索引的创建和取值

Series和DataFrame复合索引的创建和取值

(11) pd.notnull

pd.notnull

(12) Pandas|DataFrame| 处理DataFrame中的inf值

Pandas|DataFrame| 处理DataFrame中的inf值

(13) 由字典dictionary或列表list创建dataframe

由字典dictionary或列表list创建dataframe

(14) pandas|DataFrame排序及分组排序

pandas|DataFrame排序及分组排序

(15) Pandas|DataFrame| DataFrame中的nan值处理

Pandas|DataFrame| DataFrame中的nan值处理

(16) pandas|判断是否包含|contains|isin

pandas|判断是否包含|contains|isin

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值