【问题标题】:.str.contains returning actual found value instead of True or False.str.contains 返回实际找到的值而不是 True 或 False
【发布时间】:2023-03-15 14:55:01
【问题描述】:

我在我的数据框中使用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)

标签: pandas series contains


【解决方案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 列的数据帧。

【讨论】:

    猜你喜欢
    • 2020-08-20
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 2016-03-23
    相关资源
    最近更新 更多