У меня есть строки в фрейме данных 'Media6xy-08', 'Medka21xy-22'
, и я хочу извлечь строки и числа до или после определенных символов, а затем, наконец, вывести их в виде нового столбца. И на основе числовых значений после -
строки, если цифры <11 выполняют какую-то условную работу. </p>
Итак, я попытался написать функцию для этого, но не смог выяснить, как весь процесс.
import re
import pandas as pd
df = pd.DataFrame({'A':['Media6xy-08',
'Medka21xy-22']})
df
A
0 Media6xy-08
1 Medka21xy-22
То, что хочется иметь, это
A modified_A
0 Media6xy-08 Med6x_8
1 Medka21xy-22 Med21y_22
Я пытался;
def modif(x):
first_3_characters = x.str[0:3]
digits_after_a_string = re.search(r"a(\d+)", x) # only want to get first two digits after sting 'a'
digits_after_-_string = re.search(r"-(\d+)", x) # only want to get first two digits after string '-' exclude 0 if string is 08
if digits_after_-_string < 11: # conditional
new_strings = first_3_characters + digits_after_a_string +'x'+ '_' + digits_after_-_string
else:
new_strings = first_3_characters + digits_after_a_string +'y'+ '_' + digits_after_-_string
return new_strings
df['modified_A']=modif(df['A'])
Но при получении ошибок
SyntaxError: невозможно присвоить оператору
снова ожидаемый результат
A modified_A
0 Media6xy-08 Med6x_8
1 Medka21xy-22 Med21y_22