我无法为我的场景找到特定的python命令。
我想根据基因名称合并数据集。 (例如/ F44E5.4)对于大多数基因名称,有100%匹配,所以没问题。对于其他基因,存在用基因名称末端的#。,小写元音或两者都指定的变体。 (例如:/ F26D10.3.2,K01G5.8b,F52D10.3a.2)。
我想修剪那些额外的信息,以便与我的其他数据集合并。
同样在有变种的情况下,我想选择更高的字母或#变体。 (即/ a超过b,或.1超过.2)
ClosedXML
答案 0 :(得分:1)
你可以使用这种方法:
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
来缩短它...