我想提取字符串中某些字符之前和之后的字符,其中大部分位于 pandas 数据帧列中。
基本上我想从我的主要数据帧中获取并合并在一起是从我的“应变”和“区域”列中获取以下项目:
i) 原始菌株:链霉菌_sp_QL40_O
ii) 原始地区:区域1.1
Extract:
- 第二个下划线后面的字符串Ex: QL40
- “.”之前的第一个数字Ex: nbsp.1
- “.”之后的第二个数字Ex: .1
- “&”字符之前的字符串区域
- 如果数字小于 10,则在字符串“region”后添加两个 0;如果数字大于 10,则在字符串“region”后添加一个 0。
所需输出: QL40_1.region001
下面的例子
import pandas as pd
data = [['Streptomyces_sp_QL40_O', 'Region 1.1'], ['Streptomyces_sp_QL40_O', 'Region 2.2'], ['Streptomyces_sp_QL40_O', 'Region 2.1']]
df = pd.DataFrame(data, columns = ['Strain', 'Region'])
print(df)
region_list = ['QL40_1.region001', 'QL40_2.region002', 'QL40_3.region001']
我从这样的事情开始:
df['BGC Region'] = df['Strain'].str.split('_').str[2]
print('DataFrame Modified')
df['BGC Region'] = df['BGC Region'].astype(str) + '_'
df['Region No'] = df['Region'].str.split('.').str[1]
我不太确定这是否是您想要的,但它确实有效:
regions = []
for i in df['Region'].str.split('.').str[0]:
regions.append(''.join([d for d in i if d.isdigit()]))
df['BGC Region'] = df['Strain'].str.split('_').str[2] + '_' + regions + '.region'
region_number = df['Region'].str.split('.').str[1]
for i, rn in enumerate(region_number):
if int(rn) < 10:
df['BGC Region'][i] += '00' + rn
elif int(rn) < 100:
df['BGC Region'][i] += '0' + rn
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)