.str.contains 返回实际找到的值而不是 True 或 False

Posted

技术标签:

【中文标题】.str.contains 返回实际找到的值而不是 True 或 False【英文标题】:.str.contains returning actual found value instead of True or False 【发布时间】:2022-01-21 18:31:09 【问题描述】:

我在我的数据框中使用str.contains 来查看某个值是否在系列的值内。

我想查看在 contains 中传递的实际值,而不是 TrueFalse 的输出。

A     B
1   Fer
2   Ger
3   Tir    

我的预期输出:

A     B    C
1   Fer   er
2   Ger   er
3   Tir  Nan 

有没有内置的方法可以用 pandas 做到这一点?

【问题讨论】:

使用条件:df.assign(C = np.where(df.B.str.contains('er'), 'er', Nan) 【参考方案1】:

Series.str.extract 非常适合:

df['C'] = df['B'].str.extract('(er)')

输出:

>>> df
   A    B    C
0  1  Fer   er
1  2  Ger   er
2  3  Tir  NaN

(er) 中的括号很重要;它们表示捕获组。如果其中的正则表达式匹配任何文本,则匹配的文本将被复制到输出列中。如果正则表达式不匹配,则将 NaN 复制到输出列。 .str.extract 返回每​​个捕获组一列的数据帧,因此 (er)(abc)(def) 将返回一个包含 3 列的数据帧。

【讨论】:

以上是关于.str.contains 返回实际找到的值而不是 True 或 False的主要内容,如果未能解决你的问题,请参考以下文章

为啥 sklearn MinMaxScaler() 返回超出范围的值而不是错误?

根据 str.contains() 找到的行添加列。熊猫

当我递归调用它时,为啥我的函数返回以前的值而不是新的值?

XQuery:返回元素的值而不是元素本身

在 API 响应中返回 Enum 的值而不是 Spring Boot 中的名称

具有格式化值而不是实际值的 EXCEL 公式