Python 使用str.split函数拆分dataframe中的列
我正在尝试将一个具有逗号分隔值的列拆分为两列,但str.split函数返回具有0和1的列,而不是拆分的字符串值 我有一个带有“全名”列的数据框,该列的全名用逗号分隔姓和名 我使用了str.split函数,当我仅为显示而执行它时,它就可以工作。但是:当我尝试使用相同的函数将两个新列添加到带有拆分数据的同一数据帧时,我得到了两个新列,第一个列填充了0,第二个列填充了1 用于显示拆分数据的代码: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) 无法使用
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