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

.str.contains returning actual found value instead of True or False

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

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

A     B
1   Fer
2   Ger
3   Tir    

我的预期输出:

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

是否有使用 pandas 执行此操作的内置方法?

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 return 一个数据框每个捕获组有一列,所以 (er)(abc)(def) 会 return 一个有 3 列的数据框。