Мои данные представляют собой фрейм данных Pandas и выглядят так:
ALB_1ABCD2_1 ABCD3_1 AB_1 AB_2
ALB*000051 ABCB4*000050 ADH4*000131 ALB*000062
ALB*000051 ABCB4*000050 ADH4*000131 ALB*000062
ALB*000051 ABCB4*000050 ADH4*000131 ALB*000062
ALB*000051 ABCB4*000050 ADH4*000131 ALB*000062
ALB*000051 ABCB4*000050 ADH4*000131 ALB*000062
ALB*000051 ABCB4*000050 ADH4*000131 ALB*000062
ALB*000051 ABCB4*000050 ADH4*000131 ALB*000062
ALB*000051 ABCB4*000050 ADH4*000131 ALB*000062
ALB*000051 ABCB4*000050 ADH4*000131 ALB*000062
Начиная с *, я хотел бы добавить двоеточия между каждыми двумя символами (числами). Поэтому я хочу, чтобы все данные выглядели как ALB * 00: 00: 51 или ABCB4 * 00: 00: 50.
Какой самый питонический и лаконичный способ сделать это?
Редактировать: это код, который я использовал, чтобы получить желаемый результат.
for column in df_new3.columns[2:]:
df_new3[column] = df_new3[column].str.replace("+","*")
for data_str in df_new3[column]:
start_loc = data_str.find('*') + 1
former_half = data_str[:start_loc]
latter_half = ":".join(data_str[i:i+2] for i in range(start_loc, len(data_str), 2))
full = former_half + latter_half
data_str = full
print(full)
Кажется, я не могу заставить работать строку "data_str = full" - print (full), похоже, возвращает данные в нужном мне формате, но я бы хотел, чтобы значения в кадре данных были заменены на недавно отформатированный ценности.