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

2024-10-03 13:18:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

IE:第1行第1列扫描“p”“a”“s”,并在第1行第2列中查找,扫描“p”“a”“s”表示它们相同,在第3列中应为真

我对python相当陌生;我道歉

原始表格:

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

预期产出表:

+-------------+---------+----------+---------+
|  Row Index  |  Col1   |  Col2    |  Col3   |
+-------------+---------+----------+---------+
| 1           | pasta   | pastas   |  YES    |
| 2           | sauces  | orange   |  NO     |
| 3           | rosin   | robert   |  NO     |
+-------------+---------+----------+---------+

我没有任何代码显示,因为我不知道如何启动它。谢谢


Tags: no字符串代码示例indexiecol2col1
1条回答
网友
1楼 · 发布于 2024-10-03 13:18:10

这是一条单行线:

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

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

步骤1:从列中的所有字符串中提取前三个字母: 您可以通过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'})

相关问题 更多 >