<pre><code>import pandas as pd
from io import StringIO
import re
</code></pre>
<p>因此,我使用正则表达式从<code>Col2</code>字符串中获取所有数字,选择中间值,减去一,然后将该值替换回列</p>
<pre><code>def func(x_):
a = re.findall(r'\d+', x_)[1]
return x_.replace(a, str(int(a)-1))
# Sample frame
x = StringIO("""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
""")
df = pd.read_csv(x, sep=',')
df['Col2'] = df['Col2'].apply(lambda x: func(x))
print(df)
</code></pre>
<p>输出:</p>
<pre><code> Col1 Col2
0 G1 element.1:410021-411732(+):element_element
1 G1 element.2:677-10098(-):element_element
2 G1 element.4:6867-9899(-):element_element
3 G1 element.1:788-1222(+):element_element
4 G2 element.2:889-1220(-):element_element
5 G3 element.1:11-678(+):element_element
6 G3 element.1:1297-3000(-):element_element
7 G4 element.8:23221-98889(+):element_element
8 G5 element.1:1232-7789(-):element_element
9 G5 element.9:23332-23390(+):element_element
</code></pre>