如何更正python中通过str.contains生成的输出
我只是在CSV(link is)文件中有一个列“methods_discussed”,它的值是family planing methods的名称,如:如何更正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
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