我有一个两列的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
答案 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