У меня есть фрейм данных, такой как
Col1 Col2
G1 element.1:410022-411732(+):element_element
G1 element.2:678-10098(-):element_element
G1 element.4:6868-9899(-):element_element
G1 element.1:789-1222(+):element_element
G2 element.2:890-1220(-):element_element
G3 element.1:12-678(+):element_element
G3 element.1:1298-3000(-):element_element
G4 element.8:23222-98889(+):element_element
G5 element.1:1233-7789(-):element_element
G5 element.9:23333-23390(+):element_element
, поскольку вы можете видеть, что значение в Col2 имеет указанную c структуру:
содержимое элемента является переменным: element.9
: 23333-23390 (+): element
_ element
, но структура всегда одинакова: element.9 :
23333 -
23390 (
+ ):
element _
element
У вас всегда есть 2 числа, разделенных -
: element.9: 23333-23390
(+): element_element
, и я хотел бы изменить значения в Col2, когда знак это = (-)
путем вычитания из первого числа 1.
для примера element.1:1233-7789(-):element_element
становится
element.1:1232-7789(-):element_element
, потому что 1233-1 = 1232
здесь для всех примеров я должен получить новый df, такой как:
Col1 Col2
G1 element.1:410022-411732(+):element_element
G1 element.2:677-10098(-):element_element
G1 element.4:6867-9899(-):element_element
G1 element.1:789-1222(+):element_element
G2 element.2:889-1220(-):element_element
G3 element.1:12-678(+):element_element
G3 element.1:1297-3000(-):element_element
G4 element.8:23222-98889(+):element_element
G5 element.1:1232-7789(-):element_element
G5 element.9:23333-23390(+):element_element
Спасибо за вашу помощь
Я думаю, одна идея должна состоять в использовании str.split? Но я не знаю, как с этим справиться, поскольку здесь я должен split Col2
в 3 Col2bis column
s:
Col1 Col2.1 Col2.2 Col2.3
G1 element.9: 23333 -23390(+):element_element
, затем в Col2.2
df['Col2.2']=df['Col2.2']-1
и затем объединить 3 колонки еще раз
df["Col2"] = df["Col2.1"] + df["Col2.2"] + df["Col2.3"]