我希望快速合并彼此genetic complements的列。我有一个带有计数的大数据框,并且想要合并列名称为补码的列。我目前有一个系统
但是,这很慢(检查每个列名),并且根据列的顺序给出不同的列名(即,在两次运行之间删除不同的互补列)。我想知道是否有一种方法可以合并一个字典key:value对以加快过程并保持输出一致。我在下面有一个示例数据框,具有所需的结果(ATTG | TAAC和CGGG | GCCC是致意)。
df = pd.DataFrame({"ATTG": [3, 6, 0, 1],"CGGG" : [0, 2, 1, 4],
"TAAC": [0, 1, 0, 1], "GCCC" : [4, 2, 0, 0], "TTTT": [2, 1, 0, 1]})
## Current Pseudocode
for item in df.columns():
if compliment(item) in df.columns():
df[item] = df[item] + df[compliment(item)]
del df[compliment(item)]
## Desired Result
df_result = pd.DataFrame({"ATTG": [3, 7, 0, 2],"CGGG" : [4, 4, 1, 4], "TTTT": [2, 1, 0, 1]})
答案 0 :(得分:2)
翻译列,然后为列分配翻译或原始排序。这使您可以对夸奖进行分组。
import numpy as np
mytrans = str.maketrans('ATCG', 'TAGC')
df.columns = np.sort([df.columns, [x.translate(mytrans) for x in df.columns]], axis=0)[0, :]
df.groupby(level=0, axis=1).sum()
# AAAA ATTG CGGG
#0 2 3 4
#1 1 7 4
#2 0 0 1
#3 1 2 4