2024-05-13 12:27:06 发布
网友
我需要一个panda查询,检查名字、中间名或姓氏是否包含在全名中,并给我一个计数
我有这张桌子:
FULL_NAME FIRST_NAME LAST_NAME Joe Bloggs Joe Bloggs Greg Greg Larson Larson Emily Sun Clara Zen Justin Tim Justin Tim
预期产量为:4
鉴于我们现在了解到只有完整的匹配项才应被计算在内,我们可以将其写成:
df['FULL_NAME'].eq((df['FIRST_NAME'] + ' ' + df['LAST_NAME']).str.strip()).sum()
输出:
4
请注意,我在原始答案中添加了.str.strip(),以涵盖在全名中仅指定第一个或仅指定姓氏的情况(在这些情况下,我们将从+ ' ' +中获得需要删除的前导/尾随空格)
.str.strip()
+ ' ' +
out=df.apply(lambda x: x['FIRST_NAME'] in x['FULL_NAME'] and x['LAST_NAME'] in x['FULL_NAME'],axis=1) sum(out)
请参阅this问题,以了解有关列是彼此的子字符串的更多信息
Perl的注释看起来也是一个很好的答案,而且可能更快(很多事情都比apply快)。我还应该注意,根据数据的结构,我的代码可能会产生误报(例如,“Ti”的姓与“justintim”匹配)。此代码的好处是,如果您担心某些姓氏/名字可能已被切换。这将检测到匹配,即使我们正在寻找匹配“Tim Justin”
另一个可能有用的工具是pandas string splitting capabilities。这将允许您在某些指定字符处拆分全名,并根据字符串的组成部分执行操作。您甚至可以将列表扩展为多个新列,并与这些列进行比较
鉴于我们现在了解到只有完整的匹配项才应被计算在内,我们可以将其写成:
输出:
请注意,我在原始答案中添加了
.str.strip()
,以涵盖在全名中仅指定第一个或仅指定姓氏的情况(在这些情况下,我们将从+ ' ' +
中获得需要删除的前导/尾随空格)请参阅this问题,以了解有关列是彼此的子字符串的更多信息
Perl的注释看起来也是一个很好的答案,而且可能更快(很多事情都比apply快)。我还应该注意,根据数据的结构,我的代码可能会产生误报(例如,“Ti”的姓与“justintim”匹配)。此代码的好处是,如果您担心某些姓氏/名字可能已被切换。这将检测到匹配,即使我们正在寻找匹配“Tim Justin”
另一个可能有用的工具是pandas string splitting capabilities。这将允许您在某些指定字符处拆分全名,并根据字符串的组成部分执行操作。您甚至可以将列表扩展为多个新列,并与这些列进行比较
相关问题 更多 >
编程相关推荐