I have the following Pandas Dataframe:
| Name | ID |
|---|---|
| AT_A | 1 |
| AT_B | 2 |
| AOS_PAR_F | 3 |
| AOS_ROOT_LE_B | 4 |
I want to create a new column which would hold the string from column "Name" which is before the last "_" character and remove it from the original column.
So the desired output would be:
| Name | ID | Name_2 |
|---|---|---|
| A | 1 | AT |
| B | 2 | AT |
| F | 3 | AOS_PAR |
| B | 4 | AOS_ROOT_LE |
Any ideas?
CodePudding user response:
You can use a right split (rsplit):
df[['Name_2', 'Name']] = df['Name'].str.rsplit('_', 1, expand=True)
Variant with a regex:
df[['Name_2', 'Name']] = df['Name'].str.extract(r'(.*)_([^_] )$')
output:
Name ID Name_2
0 A 1 AT
1 B 2 AT
2 F 3 AOS_PAR
3 B 4 AOS_ROOT_LE
