Python-在特定字符或序列后修剪列

Python-在特定字符或序列后修剪列,python,regex,string,dataframe,Python,Regex,String,Dataframe,我很难找到适合我的场景的特定python命令 我想根据基因名称合并数据集。(ex/F44E5.4)对于大多数基因名称,都有100%的匹配,因此没有问题。对于其他基因,有一些变体在基因名称基的末尾指定为。#、小写元音或两者。(ex/F26D10.3.2、K01G5.8b、F52D10.3a.2) 我想修剪这些额外的信息位,以便与我的其他数据集合并 此外,如果存在变体,我希望选择更高的字母或#变体。(即a比b,或.1比.2) 您可以使用以下方法: In [25]: a.drop('gene_name

我很难找到适合我的场景的特定python命令

我想根据基因名称合并数据集。(ex/F44E5.4)对于大多数基因名称,都有100%的匹配,因此没有问题。对于其他基因,有一些变体在基因名称基的末尾指定为。#、小写元音或两者。(ex/F26D10.3.2、K01G5.8b、F52D10.3a.2)

我想修剪这些额外的信息位,以便与我的其他数据集合并

此外,如果存在变体,我希望选择更高的字母或#变体。(即a比b,或.1比.2)


您可以使用以下方法:

In [25]: a.drop('gene_name',1) \
    ...:  .groupby(a.gene_name.str.extract(r'([^\.]*\.\d*)', expand=False)) \
    ...:  .max() \
    ...:  .join(b.drop('gene_name',1)
    ...:         .groupby(b.gene_name.str.extract(r'([^\.]*\.\d*)', expand=False))
    ...:         .max()) \
    ...:  .reset_index()
    ...:
Out[25]:
  gene_name  v_1  v_2
0  F26D10.3    2  0.4
1   F44E5.4    1  0.4
2  F52D10.3    2  0.7
3   K01G5.8    3  0.6
4  K52GGG.1    4  0.4
或者使用
pd.merge()
方法:

In [26]: pd.merge(
    ...:     a.drop('gene_name',1)
    ...:      .groupby(a.gene_name.str.extract(r'([^\.]*\.\d*)', expand=False))
    ...:      .max(),
    ...:     b.drop('gene_name',1)
    ...:      .groupby(a.gene_name.str.extract(r'([^\.]*\.\d*)', expand=False))
    ...:      .max(),
    ...:     left_index=True,
    ...:     right_index=True
    ...: ).reset_index()
    ...:
Out[26]:
  gene_name  v_1  v_2
0  F26D10.3    2  0.4
1   F44E5.4    1  0.4
2  F52D10.3    2  0.7
3   K01G5.8    3  0.6
4  K52GGG.1    4  0.4
PS我用
a
b
代替了
df1
df2
,使它稍微短一点

In [26]: pd.merge(
    ...:     a.drop('gene_name',1)
    ...:      .groupby(a.gene_name.str.extract(r'([^\.]*\.\d*)', expand=False))
    ...:      .max(),
    ...:     b.drop('gene_name',1)
    ...:      .groupby(a.gene_name.str.extract(r'([^\.]*\.\d*)', expand=False))
    ...:      .max(),
    ...:     left_index=True,
    ...:     right_index=True
    ...: ).reset_index()
    ...:
Out[26]:
  gene_name  v_1  v_2
0  F26D10.3    2  0.4
1   F44E5.4    1  0.4
2  F52D10.3    2  0.7
3   K01G5.8    3  0.6
4  K52GGG.1    4  0.4