我想问一下你的帮助" if语句"在我用于聚合数据帧中的一些数据的函数内部。使用此函数,我想检查数据帧的一列中是否有其他字符串中的任何一个字符串,以返回特定值和匹配字符串。
这就是我到目前为止所做的事情。例如,如果"f"
和"k"
在我的字符串("fk"
)中,一旦我在此行(find_string("fk")
)上应用我的函数,我的函数将返回{{1 }}。另外,我还希望列出在列表中找到的字符串,在本例中为"success"
。像'f'
"success" + "f"
有什么建议吗?
我正在使用带有pandas库的python 2.7.13。
答案 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。