You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中提取名字长度≥4的人员姓氏?求代码优化

问题分析

原代码的错误出在最后一行的判断逻辑:data['FirstName'] in data['NewFirstName']试图将整个Series对象用于in判断,而Series是不可哈希的类型,因此抛出TypeError。此外代码还存在逻辑错误——把拆分后的名字列当成姓氏列赋值给LastName,完全搞反了对应关系。

简洁解决方案

用Pandas的矢量化字符串操作可以高效完成需求,避免低效的apply和错误逻辑:

import pandas as pd

# 读取数据
data = pd.read_csv("Data.csv")

# 按第一个空格拆分姓名,生成名字和姓氏列(n=1避免名字含空格时拆分错误)
data[["FirstName", "LastName"]] = data["EmployeeName"].str.split(n=1, expand=True)

# 给名字长度不足4的行清空姓氏列
data.loc[data["FirstName"].str.len() < 4, "LastName"] = None

# 提取符合条件的记录(可选)
derived_name = data.dropna(subset=["LastName"])

关键优化点

  • 用str.split(n=1, expand=True)一次性拆分并生成两列,无需单独分步赋值
  • 用矢量化的str.len()和loc索引替代apply,执行效率更高
  • 直接通过条件索引控制姓氏列的赋值,逻辑清晰无歧义

内容的提问来源于stack exchange,提问作者Bumze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:50:07