使用str.split函数在数据框中拆分列

Ken*_*eno 3 python python-3.x pandas jupyter

我正在尝试将用逗号定界的值的列拆分为2列,但是str.split函数返回的列的值为0和1,而不是拆分的字符串值

我有一个带有“全名”列的数据框,其中有一个全名,用逗号分隔姓氏和名字。

我使用了str.split函数,该函数仅在显示时才起作用。但是:当我尝试使用相同的功能将2个新列添加到具有拆分数据的同一数据帧中时,我会得到2个新列,其中第一个填充为0,第二个填充为1。

用于显示拆分数据的代码:

df2015_2019.iloc[:,0].str.split(',', expand=True)

无法使用拆分数据创建新列的代码:

df2015_2019['Lname'],df2015_2019['Fname'] = df2015_2019.iloc[:,0].str.split(',', expand=True)

我得到全为0的列“ Lname”和全为1的列“ Fname”

Kar*_*mar 5

实现此目的的另一种方法如下。

示例数据集:

>>> df = pd.DataFrame({'Name': ['Karn,Kumar', 'John,Jimlory']})
>>> df
           Name
0    Karn,Kumar
1  John,Jimlory
Run Code Online (Sandbox Code Playgroud)

结果:

您可以在拆分值时分配列名,如下所示。

>>> df[['First Name','Last Name']] = df['Name'].str.split(",", expand=True)
>>> df
           Name First Name Last Name
0    Karn,Kumar       Karn     Kumar
1  John,Jimlory       John   Jimlory
Run Code Online (Sandbox Code Playgroud)

或者,如另一个答案所述。

>>> df['Name'].str.split(",", expand=True).rename({0: 'First_Name', 1: 'Second_Name'}, axis=1)
  First_Name Second_Name
0       Karn       Kumar
1       John     Jimlory
Run Code Online (Sandbox Code Playgroud)

要么

>>> df['Name'].str.rsplit(",", expand=True).rename(columns={0:'Fist_Name', 1:'Last_Name'})
  Fist_Name Last_Name
0      Karn     Kumar
1      John   Jimlory
Run Code Online (Sandbox Code Playgroud)

注意:您可以使用axis = columnsaxis =1两者相同。

这是另一种使用方式 Series.str.partition ,几乎不需要更改,但是,我们必须使用逗号“,”以及列drop作为partition保留。

>>> df['Name'].str.partition(",", True).rename(columns={0:'Fist_Name', 2:'Last_Name'}).drop(columns =[1])
  Fist_Name Last_Name
0      Karn     Kumar
1      John   Jimlory
Run Code Online (Sandbox Code Playgroud)

使其更苗条,我们可以为定义dict值rename

1-使用str.partition..

dict = {0: 'First_Name', 2: 'Second_Name'}

df = df['Name'].str.partition(",", True).rename(dict2,axis=1).drop(columns =[1])
print(df)

  First_Name Second_Name
0       Karn       Kumar
1       John     Jimlory
Run Code Online (Sandbox Code Playgroud)

2-使用str.split()..

dict = {0: 'First_Name', 1: 'Second_Name'}

df = df['Name'].str.split(",", expand=True).rename(dict, axis=1)
 print(df)
  First_Name Second_Name
0       Karn       Kumar
1       John     Jimlory
Run Code Online (Sandbox Code Playgroud)