Python-一个字符串列在另一个字符串列中吗?

时间:2018-09-06 17:07:26

标签: python string pandas

我有一个两列的pandas数据框。我需要确定一列的字符串值是否在另一列的字符串值中。第二列可以是“单个值”,例如“ value1”,也可以是多个项目,在字符串中用“ /”分隔,例如:“ value1 / value2 / value3”。

对于每一行,我需要确定该字符串是否存在于同一行的另一个字符串中,以便'value1 / value2 / value3'中的'value1'评估为True。

到目前为止,我的尝试未能在每一行中进行检查,只是看第一列字符串是否出现在所有行的第2列中。

这里是一个例子:

import pandas as pd

df = pd.DataFrame({'a':['a','b','c','d','e'],
                   'b':['a/b','c/d','c/a','a/b','e']})

df['a'].isin(df['b'])

预期结果将评估为:

True
False
True
False
True

1 个答案:

答案 0 :(得分:3)

理解力

[a in b for a, b in zip(df.a, df.b)]

[True, False, True, False, True]

df.assign(In=[a in b for a, b in zip(df.a, df.b)])

   a    b     In
0  a  a/b   True
1  b  c/d  False
2  c  c/a   True
3  d  a/b  False
4  e    e   True

脾气暴躁

from numpy.core.defchararray import find

a, b = df.values.astype(str).T
find(b, a) >= 0

array([ True, False,  True, False,  True])

df.assign(In=find(b, a) >= 0)

   a    b     In
0  a  a/b   True
1  b  c/d  False
2  c  c/a   True
3  d  a/b  False
4  e    e   True