我如何导出名字在pandas数据框架中有条件的每个人的姓氏?

r8uurelv  于 2023-06-04  发布在  其他
关注(0)|答案(2)|浏览(130)

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

data = pd.read_csv("Data.csv")
data

#split the EmployeeName into firstname and lastname

flname = data['EmployeeName'].str.split(expand=True)
flname

#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
data

#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:unhashable type:'系列'

是否有更短的方式来使用pandas编写这些代码行?

u3r8eeie

u3r8eeie1#

我用问题1387的答案解决了这个问题。

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

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

ac1kyiln

ac1kyiln2#

拆分数据

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

拆分名称列后,您应该使用掩码,因为它使此操作非常简单。

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

应该可以给予所需的输出

相关问题