Python 使用str.split函数拆分dataframe中的列

Python 使用str.split函数拆分dataframe中的列,python,python-3.x,pandas,jupyter,Python,Python 3.x,Pandas,Jupyter,我正在尝试将一个具有逗号分隔值的列拆分为两列,但str.split函数返回具有0和1的列,而不是拆分的字符串值 我有一个带有“全名”列的数据框,该列的全名用逗号分隔姓和名 我使用了str.split函数,当我仅为显示而执行它时,它就可以工作。但是:当我尝试使用相同的函数将两个新列添加到带有拆分数据的同一数据帧时,我得到了两个新列,第一个列填充了0,第二个列填充了1 用于显示拆分数据的代码: df2015_2019.iloc[:,0].str.split(',',expand=True) 无法使用

我正在尝试将一个具有逗号分隔值的列拆分为两列,但str.split函数返回具有0和1的列,而不是拆分的字符串值

我有一个带有“全名”列的数据框,该列的全名用逗号分隔姓和名

我使用了str.split函数,当我仅为显示而执行它时,它就可以工作。但是:当我尝试使用相同的函数将两个新列添加到带有拆分数据的同一数据帧时,我得到了两个新列,第一个列填充了0,第二个列填充了1

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

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

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

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


我得到一个列“Lname”和一个列“Fname”,分别包含所有0和1。您可以在拆分后重命名该列:

df=pd.DataFrame({'a':['a,b','c,d']})
df['a'].str.split(',,expand=True)。重命名({0:'Lname',1:'Fname'},axis='columns')
这张照片是:

  Lname Fname
0     a     b
1     c     d

实现这一目标的另一种方法如下

示例数据集: 结果: 您可以在拆分值时指定列名,如下所示

>>> 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
或者,正如另一个答案所述

>>> 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

注意:您可以使用
axis=columns
axis=1
两者都是相同的

不过,另一种使用的方法是使用
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
只需将其精简,我们就可以为
重命名定义dict值

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
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
2-使用
str.split()

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
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

可以将
pandas.Series.str
访问器分配给列

  • split
    首先(可选地,使用
    n=1
    )精确地保持一次分割
  • 使用另一个
    str


  • 请检查并提供一个好的,我不知道你可以这样做+1.
    df['Lname'], df['Fname'] = df['Name'].str.split(',').str