在pandas DataFrame中将人名全部拆分为三列

时间:2017-10-29 13:40:14

标签: python regex pandas split multiple-columns

我想知道是否有人可以帮我弄清楚如何在pandas DataFrame中将一个人的全名分成三列(forename,middle_name,surname)?

下面是我要分离的列的示例。任何帮助将不胜感激。

名 阿巴卡诺维奇,马格达莱纳 修道院,埃德温奥斯汀 雅培,贝雷尼斯 雅培,莱姆埃尔弗朗西斯 亚伯拉罕,艾弗 阿布萨隆 Abts,Tomma Acconci,Vito Ackling,Roger

2 个答案:

答案 0 :(得分:0)

如果import { DriveItem } from '@microsoft/microsoft-graph-types'; // other imports @NgModule({ imports: [DriveItem], ... }) 是您的列名,则可以使用拆分重命名,即

name

输出:

   first name middle name last name
0  Abakanowicz                      
1    Magdalena       Abbey          
2        Edwin      Austin    Abbott
3     Berenice      Abbott          
4       Lemuel     Francis  Abrahams
5         Ivor     Absalon      Abts
6        Tomma     Acconci          
7         Vito     Ackling          
8        Roger                      

答案 1 :(得分:0)

使用split + pop提取专栏name

df[['sur','nam1','nam2']] = df.pop('name').str.split(r',\s+|\s+', expand=True)
print (df)
           sur       nam1     nam2
0  Abakanowicz  Magdalena     None
1        Abbey      Edwin   Austin
2       Abbott   Berenice     None
3       Abbott     Lemuel  Francis
4     Abrahams       Ivor     None
5      Absalon       None     None
6         Abts      Tomma     None
7      Acconci       Vito     None
8      Ackling      Roger     None

或者:

df[['sur','nam']] = df.pop('name').str.split(', ', expand=True)
df[['nam1','nam2']] = df.pop('nam').str.split(expand=True)
print (df)
           sur       nam1     nam2
0  Abakanowicz  Magdalena     None
1        Abbey      Edwin   Austin
2       Abbott   Berenice     None
3       Abbott     Lemuel  Francis
4     Abrahams       Ivor     None
5      Absalon       None     None
6         Abts      Tomma     None
7      Acconci       Vito     None
8      Ackling      Roger     None