我想知道如果我的数据帧的某些列中存在特定字符串(每列有不同的字符串)。
据我了解isin() https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.isin.html是为数据帧编写的,但也可以用于系列,而str.contains() https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.Series.str.contains.html对于系列来说效果更好。
我不明白我应该如何在两者之间做出选择。 (我搜索了类似的问题,但没有找到任何关于如何在两者之间进行选择的解释。)
.isin
检查列中的每个值是否包含在任意值列表中。大致相当于value in [value1, value2]
.
str.contains
检查列中的每个值中是否包含任意值。大致相当于substring in large_string
.
换句话说,.isin
按列工作并且适用于所有数据类型。str.contains
按元素工作,并且仅在处理字符串(或可以表示为字符串的值)时才有意义。
来自官方文档:
系列.isin(值) https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.isin.html
检查Series中是否包含值。
返回一个布尔系列,显示系列中的每个元素是否
与传递的值序列中的元素完全匹配。
Series.str.contains(pat, case=True, flags=0, na=nan,**
**正则表达式=真) https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.contains.html
测试模式或正则表达式是否包含在
系列或索引的字符串。
根据是否给定模式或返回布尔系列或索引
正则表达式包含在系列或索引的字符串中。
例子:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)