我正在使用名称的pandas数据框,并且有几种不同的名称格式。一些是“第一”,“最后”,其他是“第一”,“中间”,“最后”,其他是“第一初始”,“第二初始”,“最后”。我想通过使用字符串将它们分为三列。我目前正在尝试使用split函数,但是却收到“ ValueError:列必须与键的长度相同”的信息,因为某些名称将被拆分为两列,而另一些名称将被拆分为三列。我该如何解决?
df = {'name': ['bradley efron', 'c arden pope', 'a l smith']}
mak_df[['First', 'Middle', 'Last']] = mak_df.Author_Name.str.split(" ", expand = True)
答案 0 :(得分:0)
这是一种解决方法:
import pandas as pd
list_of_names = ['bradley efron', 'c arden pope', 'a l smith']
new_list =[]
for name in list_of_names:
new_list.append(name.split(" "))
print(new_list)
for name in new_list:
if (len(name)==2):
name.insert(1," ")
print(new_list)
df = pd.DataFrame.from_records(new_list).T
df.index = ["first name","middle name","last name"]
df= df.T
print(df)
答案 1 :(得分:0)
也许有更好的方法可以解决此问题,但这就是我所拥有的:
df = {'name': ['bradley efron', 'c arden pope', 'a l smith']}
df=pd.DataFrame(df)
df=df['name'].str.split(' ',expand=True)
df.columns=['first','middle','last']
df['last']=np.where(df['last'].isnull(),df['middle'],df['last'])
df['middle']=np.where((df['middle']==df['last']),'',df['middle'])