作者:筱杰丶Jevon_879 | 来源:互联网 | 2022-11-30 21:41
我想知道我的数据帧的某些列中是否存在特定的字符串(每列的不同字符串).据我所知,isin是为数据帧编写的,但也适用于Series,而str.contains对于Series更好.其实我不明白我应该如何在两者之间做出选择.
非常感谢您的回答,我已经搜索了类似的问题,但没有找到任何解释两者之间的选择.
1> DeepSpace..:
.isin
检查列中的每个值是否包含在任意值列表中.大致相当于value in [value1, value2]
.
.contains
检查列中每个值中是否包含任意值.大致相当于substring in large_string
.
换句话说,按.isin
列工作,可用于所有数据类型..contains
在元素方面工作,只有在处理字符串(或可以表示为字符串的值)时才有意义.
从官方文档:
Series.isin(值)
检查系列中是否包含值.返回一个布尔系列,显示Series中的每个元素是否与传递的值序列中的元素完全匹配.
Series.str.contains(pat,case = True,flags = 0,na = nan,****regex = True)
测试pattern或regex是否包含在Series或Index的字符串中.
返回布尔值系列或索引,具体取决于给定模式或正则表达式是否包含在系列或索引的字符串中.
例子:
print(df)
# a
# 0 aa
# 1 ba
# 2 ca
print(df[df['a'].isin(['aa', 'ca'])])
# a
# 0 aa
# 2 ca
print(df[df['a'].str.contains('b')])
# a
# 1 ba
值得注意的是`pd.Series.isin`展示[材料差异](/sf/ask/17360801/)与`value in容器`,可以针对数字数据进行优化.虽然`pd.Series.str.contains`总是只是一个Python级循环.