Как изменить и преобразовать значение в строке в столбце DataFrame?

Дана таблица:

import pandas as pd 
df3 = pd.DataFrame({'Name':['020245D5Z022/55D0',  '92014947Q62500/29', '02025727Y052D0/55', '320247528043/01S0'], 'Sum': [80, 100, 200, 300]}) 
print(df3)
  1. Если '/' на 12 позиции в значении, тогда нужно удалить и получить 020245D5Z02255D0.
  2. А если '/' на 14 позиции в значении, тогда нужно 92014947Q62500/29 преобразовать иначе, левые 11 символов + правые два символа + два символа на позиция 15 и 16", т.е. в нашем случае это 92014947Q6252900.
df3.loc[df3.Name.str[12] == '/']
df3.loc[df3.Name.str[14] == '/']

Ответ, должен получиться такой:

                Name  Sum
0  020245D5Z02255D0   80
1  92014947Q6252900  100
2  02025727Y05255D0  200
3  32024752804301S0  300

Ответы (2 шт):

Автор решения: strawdog

Вероятно, как-нибудь так:

mask1 = df3["Name"].str.find("/") == 12
mask2 = df3["Name"].str.find("/") == 14
df3.loc[mask1, "Name"] = df3.loc[mask1, "Name"].str.replace("/","")
df3.loc[mask2, "Name"] = df3.loc[mask2, "Name"].replace(to_replace="(.+)(.{2})/(.+)", value=r"\1\3\2", regex=True)

Результат:

               Name  Sum
0  020245D5Z02255D0   80
1  92014947Q6252900  100
2  02025727Y05255D0  200
3  32024752804301S0  300
→ Ссылка
Автор решения: MaxU
import numpy as np

df3["Name"] = np.where(df3["Name"].str[12] == "/", 
                       df3["Name"].str.replace("/", "", regex=False), 
                       df3["Name"].str.replace(r"(.+)(.{2})/(.+)", r"\1\3\2"))

результат:

In [47]: df3
Out[47]:
               Name  Sum
0  020245D5Z02255D0   80
1  92014947Q6252900  100
2  02025727Y05255D0  200
3  32024752804301S0  300
→ Ссылка