我有一个数据帧,比如
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中的值具有特定的结构:
元素内容是可变的:element.9
:23333-23390(+):element
{
但是结构总是一样的:element.9:
23333-
23390(
+):
element_
element
您总是有两个数字由-
:element分隔。9:23333-23390
(+):element\u element
当符号为=(-)
时,我想通过从第一个数字1中减去来更改Col2中的值
例如element.1:1233-7789(-):element_element
变成
element.1:1232-7789(-):element_element
因为1233-1 = 1232
对于all示例,我应该获得一个新的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"]
因此,我使用正则表达式从
Col2
字符串中获取所有数字,选择中间值,减去一,然后将该值替换回列输出:
检查这是否对您有效:其想法是创建一个模式,进行减法运算,并用pandasstr.replace方法替换字符串
具有矢量化操作的“泛ASIC”解决方案:
相关问题 更多 >
编程相关推荐