我在比较两列之间的字符串时遇到了这个问题。我想要做的是:对于每一行,检查字符串是否列在列B中,如果是,则在列C中打印一个新字符串“是”。
A列包含NaN值(我导入的csv中的空白单元格)。
我试过了:
df['C']=df['B'].str.contains(df.loc['A'])
df.loc[df['A'].isin(df['B']), 'C']='Yes'
它们都不起作用,因为我找不到比较字符串的正确方法。
答案 0 :(得分:2)
这使用列表理解,因此它可能不是最快的解决方案,但是有效且简洁。
df['C'] = pd.Series(['Yes' if a in b else 'No' for a,b in zip(df['A'],df['B'])])
编辑:如果您不想将值保留在C中而不是用' No'覆盖它们,您可以这样做:
df['C'] = pd.Series(['Yes' if a in b else c for a,b,c in zip(df['A'],df['B'], df['C'])])
答案 1 :(得分:2)
df = pd.DataFrame([['ab', 'abc'],
['abc', 'ab']], columns=list('AB'))
df['C'] = np.where(df.apply(lambda x: x.A in x.B, axis=1), 'Yes', 'No')
df
答案 2 :(得分:0)
尝试使用正则表达式:https://docs.python.org/2/library/re.html如果您已经为每个单元格或值必须使用id编写代码。