如何更正python中通过str.contains生成的输出

如何更正python中通过str.contains生成的输出,python,pandas,Python,Pandas,我只是在CSV(link is)文件中有一个列“methods_discussed”,它的值是family planing methods的名称,如: methods_discussed emergency female_sterilization male_sterilization iud NaN injectables male_condoms male_condoms female_sterilization male_sterilization injectables iud mal

我只是在CSV(link is)文件中有一个列“methods_discussed”,它的值是family planing methods的名称,如:

methods_discussed

emergency
female_sterilization
male_sterilization
iud
NaN
injectables male_condoms
male_condoms
female_sterilization male_sterilization
injectables
iud male_condoms
我使用了
df1[“讨论的方法”].str.contains(pat=method)
,但输出与预期不匹配。可能男性_绝育是女性_绝育的子串,男性_绝育也是如此。以下是index2的实际输出。它必须显示为假,因为index2中讨论的方法列中有雌性_灭菌

创建了8种计划生育方法的列表 预期产量

id | methods_discussed | female_condoms | emergency | male_condoms | pill | injectables | iud | male_sterilization | female_sterilization
1 | emergency | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
2 | female_sterilization | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | ***FALSE*** | TRUE
实际产量

id | methods_discussed | female_condoms | emergency | male_condoms | pill | injectables | iud | male_sterilization | female_sterilization
1 | emergency | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
2 | female_sterilization | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | ***TRUE*** | TRUE

代码中没有错误,但仅在输出中

在模式周围使用单词边界-
\b\b
以避免错误,并且参数
na=False
对于输出中的避免
NaN
s很好-此处替换为
False

for method in method_names:
    df1[method]=df1["methods_discussed"].str.contains(pat = r"\b{}\b".format(method), na=False)


请不要发布数据链接,而是发布一个i样本作为文本和代码,这是不符合预期的输出工作。这个问题目前还不清楚,我将负责数据发布。然而,我通过@jezraelOkay获得了问题的答案,请点击答案左侧的灰色勾号接受答案。我想了解r“{}\b”。format(method)在str.contains中的作用(pat=r“{}\b”。format(method),na=False)。还有为什么str.match(pat=method)不能解决这个问题。@AshishBandhu-最好的办法是检查。
for method in method_names:
    df1[method]=df1["methods_discussed"].str.contains(pat = r"\b{}\b".format(method), na=False)
print (df1)
                         methods_discussed  female_condoms  emergency  \
0                                emergency           False       True   
1                     female_sterilization           False      False   
2                       male_sterilization           False      False   
3                                      iud           False      False   
4                                      NaN           False      False   
5                 injectables male_condoms           False      False   
6                             male_condoms           False      False   
7  female_sterilization male_sterilization           False      False   
8                              injectables           False      False   
9                         iud male_condoms           False      False   

   male_condoms   pill  injectables    iud  male_sterilization  \
0         False  False        False  False               False   
1         False  False        False  False               False   
2         False  False        False  False                True   
3         False  False        False   True               False   
4         False  False        False  False               False   
5          True  False         True  False               False   
6          True  False        False  False               False   
7         False  False        False  False                True   
8         False  False         True  False               False   
9          True  False        False   True               False   

   female_sterilization  
0                 False  
1                  True  
2                 False  
3                 False  
4                 False  
5                 False  
6                 False  
7                  True  
8                 False  
9                 False