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”
实现此目的的另一种方法如下。
>>> 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 = columns或axis =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)
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |