如何派生名字在 pandas 数据框中具有条件的每个人的姓氏?

How do I derive the surnames of everyone whose first names have a condition in a pandas data frame?

提问人:Bumze 提问时间:5/29/2023 最后编辑:Bumze 更新时间:11/5/2023 访问量:41

问:

使用 pandas,我想为一组长度为 4 个或更多字符的名字派生一个姓氏列。

我试过这些:

data = pd.read_csv("Data.csv")
#split the EmployeeName into firstname and lastname
flname = data['EmployeeName'].str.split(expand=True)

#add first name column to data frame
data['FirstName'] = flname[0]

#apply condition on first name
dfname = data['FirstName'].apply(lambda x:x if len(x) \> 4 else None)
dfname = dfname.dropna()

#add last name and new first name columns to data frame
data['LastName'] = flname[0]
data['NewFirstName'] = dfname

#This is the wrong bit that throws an error
derived_name = data.apply(lambda x:x if data\['FirstName'\] in data\['NewFirstName'\] else None)
derived_name.dropna()

#TypeError:不可哈希类型:“系列”

#Are 有更短的方法来用 pandas 编写这些代码行?

pandas 拆分 条件语句 系列 名称

评论

1赞 gtomer 5/29/2023
请添加您的数据示例 (csv)

答:

0赞 Bumze 5/29/2023 #1

我通过回答问题 1387 解决了这个问题。

df = data[data['NewFirstName'].notna()]
df['LastName']

谢谢大家。但是有没有更短的方法来回答这个问题呢?

评论

0赞 ניר 5/30/2023
不要发布可能误导他人的冗余(第 2 行)代码。
0赞 Bumze 5/31/2023
著名的。谢谢你的提及。
0赞 Ajey Dikshit 5/29/2023 #2

拆分数据

data[['Firstname', 'Lastname']] = data['EmployeeName].str.split(expand=True)

拆分名称列后,您应该使用掩码,因为它使这变得非常容易。

data[data['Firstname'].str.len() >= 4]['Lastname']

应该给你想要的输出

评论

0赞 Bumze 5/29/2023
感谢您提供简短的方法@Ajey D。data[data['FirstName'].str.len() >= 4]['LastName']