我有一个df看起来有点像这样:
name id
John McNamara 3498
Jane Adams, M.D. 6725
Nour Abd Almohsen Jr M.D. 0197
Alex Ambrose PhD 3287
Nancy Ann Brown, MPH, PhD 9127
Kathy W. 4389
Jack Joshua Smith White 6756
我需要将name列分为first name、middle name、last name、suffix和title。通常我会使用类似.str.split
的东西,但在这种情况下,并不是每个人都有中间名、后缀或标题。另外,有些值有逗号分隔,有些没有。有什么方法可以解释这些差异吗?你知道吗
理想情况下,我希望我的输出如下所示:
first_name middle_name last_name suffix title id
John McNamara 3498
Jane Adams M.D. 6725
Nour Abd Almohsen Jr M.D. 0197
Alex Ambrose PhD 3287
Nancy Ann Brown MPH, PhD 9127
Jack J Smith White
编辑:我知道这需要多个步骤,包括去除标点符号。我发现有些事情特别棘手:
pd.concat([df['id'], df['name'].str.split(' ', expand=True)], axis=1)
这样的名字,比如Jack Joshua Smith-White,最后会被分成多个“中间名”列,其中Smith和其他人的姓在同一列中。有没有办法让最后一个字符串自动进入最后一列?
我试着用df['last\u name'].fillna(df['middle\u name'],inplace=True)来解决这个问题,但这不起作用,因为有时人们有多个“中间名”,我需要一种方法来选择最新的中间名,而不是None
。你知道吗
如果您能够在dataframe中获得所有可能的标题,那么可以像这样解析您的名称:
以下是您提供的输出,包括一个有问题的条目:
但是,数据集在标点符号方面看起来非常不规则
相关问题 更多 >
编程相关推荐