.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 中传递的实际值,而不是 True
或 False
的输出。
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() 返回超出范围的值而不是错误?