通过相应的字典值组合列

2024-03-29 02:38:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找快速组合彼此genetic complements的列。我有一个带有计数的大数据框,希望在列名是互补项的情况下合并列。我现在有一个系统

  • 获取列名的补码
  • 检查列名称中的赞美词
  • 如果存在匹配项,则将列添加到一起
  • 然后删除赞美栏

但是,这很慢(检查每个列名),并根据列的顺序给出不同的列名(即在运行之间删除不同的补充列)。我想知道是否有一种方法可以合并字典键:值对来加快进程并保持输出的一致性。我在下面有一个示例数据框,其中包含所需的结果(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]}) 

Tags: columns数据indataframedfitempdgenetic
1条回答
网友
1楼 · 发布于 2024-03-29 02:38:12

翻译列,然后将首先排序的翻译或原始列指定给列。这允许你分组赞美

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

相关问题 更多 >