使用 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:不可散列的类型:'系列'
#是否有用 pandas 编写这些代码行的更短的方法?
我通过回答问题1387解决了这个问题。
df = data[data['NewFirstName'].notna()]
df
df['LastName']
谢谢大家。但有没有更简短的方法来回答这个问题?
分割数据
data[['Firstname', 'Lastname']] = data['EmployeeName].str.split(expand=True)
拆分名称列后,您应该使用屏蔽,因为这使这变得非常容易。
data[data['Firstname'].str.len() >= 4]['Lastname']
应该给你想要的输出