我的问题与此类似: How to check whether the content of Column A is contained in Column B using Python DataFrame?
不幸的是,在我的情况下,选择的答案导致无类型错误。
我有以下格式的pandas数据框:
id,text_1,text_2_compare
1,yyy,yy
2,yxy,xx
3,zzy,zy
4,zzy,x
5,xyx,yx
我想比较这些列以查看“ text_1”中是否包含“ text_2_compare”并创建一个新指标。
id,text_1,text_2_compare,match
1,yyy,yy,1
2,yxy,xx,0
3,zzy,zy,1
4,zzy,x,0
5,xyx,yx,1
任何技巧或窍门(尤其是矢量化的实现方式)将不胜感激!
答案 0 :(得分:1)
import re
df['compare_match']=df.apply(lambda v:len(re.findall(v[2],v[1])),axis=1)
df
id text_1 text_2_compare compare_match
0 1 yyy yy 1
1 2 yxy xx 0
2 3 zzy zy 1
3 4 zzy x 0
4 5 xyx yx 1
编辑:
我实际上认为OP需要text_2_compared
出现在text_1
中的次数,但是在再次阅读问题时,似乎OP只想要一个指标变量。因此,像上面@gaganso一样使用v[2] in v[1]
就足够了
答案 1 :(得分:1)
以@Onyambu的答案为基础。
C:\code\practice\promise-exercise2>node index.js
*********** begin ***********
*********** end ***********
working...
可以代替in
re.findall()
输出:
df["match"] = df.apply(lambda v: int(v[2] in v[1]),axis=1)
print(df["match"]
答案 2 :(得分:0)
使用简单列表
df['New']=[int(y in x) for x , y in zip(df['text_1'],df['text_2_compare'])]
df
Out[496]:
id text_1 text_2_compare New
0 1 yyy yy 1
1 2 yxy xx 0
2 3 zzy zy 1
3 4 zzy x 0
4 5 xyx yx 1