如果其中一个字符串中的一个在其他字符串中:返回值+匹配字符串,Python

时间:2017-11-02 12:47:19

标签: python string pandas

我想问一下你的帮助" if语句"在我用于聚合数据帧中的一些数据的函数内部。使用此函数,我想检查数据帧的一列中是否有其他字符串中的任何一个字符串,以返回特定值和匹配字符串。

这就是我到目前为止所做的事情。例如,如果"f""k"在我的字符串("fk")中,一旦我在此行(find_string("fk"))上应用我的函数,我的函数将返回{{1 }}。另外,我还希望列出在列表中找到的字符串,在本例中为"success"。像'f'

这样的东西
"success" + "f"

有什么建议吗?

我正在使用带有pandas库的python 2.7.13。

3 个答案:

答案 0 :(得分:2)

如果您正在使用pandas,请使用str.extract + np.where,速度要快得多。

v = df['yourCol'].str.extract('([acdf])', expand=False)
df['newCol'] = np.where(v.isnull(), '', 'success' + v.astype(str))

答案 1 :(得分:1)

def find_string(b):
   for c in ['a', 'c', 'd', 'f']:
       if c in b:
           return 'success ' + c
   return 'failure'

>>> find_string('fk')
'success f'

答案 2 :(得分:1)

您可以简单地使用设置交叉点。它不需要任何if或循环,应​​该非常有效:

>>> set('try to find a substring') & set('acdf')
{'a', 'f', 'd'}
>>> set('no substring') & set('acdf')
set()

如果您真的想使用熊猫,请查看@ Coldspeed' solution