微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何扫描字符串中的字符以标记匹配是否正确

如何解决如何扫描字符串中的字符以标记匹配是否正确

我有2列字符串,如果行中每个字符串的前3个字符匹配,我想创建一个带有“是”或“否”的列。基本上,代码遍历第1列第1行的前3个字符,并将其与第2列第1行进行比较,以查看前3个字符是否匹配;如果是,则应在示例的第3列中显示“是”。

IE:第1行第1列扫描“ p”“ a””,然后在第1行第2列中查找并扫描“ p”“ a””,这意味着它们相同,并且在第3列中应为true

我对python很陌生;我的道歉。

原始表:

print(df)
        col1        col22
Index                    
0        Img     Img_A_10
1      Fruit  Fruit_A_100
2        Img     Img_A_10
3       Ball   Ball_B_120
4       Ball   Ball_B_120
5      Fruit  Fruit_A_100
6      shirt        shirt
7      Fruit  Fruit_A_100

预期输出表:

+-------------+---------+----------+
|  Row Index  |  Col1   |  Col2    |
+-------------+---------+----------+
| 1           | pasta   | pastas   |
| 2           | sauces  | orange   |
| 3           | kiwi    | kiwis    |
+-------------+---------+----------+

我没有任何代码可以显示,因为我不确定如何启动。谢谢。

解决方法

这里是单线:

df['Col3'] = (df['Col1'].str[:3] == df['Col2'].str[:3]).map(
    {True: 'YES',False: 'NO'})

经验法则:使用pandas / numpy数据所做的几乎所有事情在矢量格式下都更好,即不使用循环。

第一步:从列中的所有字符串中提取前三个字母: 您可以通过df['col'].str对象对列执行几乎所有标准的字符串操作。此处:df['Col1'].str[:3]

步骤2:检查3个字符的前缀是否匹配:再次,您可以直接比较列以获取一列布尔值。 df['Col1'].str[:3] == df['Col2'].str[:3]

第3步:将布尔值替换为“是”和“否”。希望您能看到它的去向:boolean_data.map({True: 'YES',False: 'NO'})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。