通过反向恭维字符串合并列

2024-04-19 23:12:20 发布

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

所以我被困在如何处理熊猫的数据操作技术上。我在下面有一个数据帧示例,每行有25个计数。 我想按相反的恭维顺序合并列名。你知道吗

   AA CC GG AT TT

    4  7  0  9  5
    3  8  5  5  2
    8  6  2  8  1

“AA”和“TT”列是相互的反向恭维,“CC”和“GG”

   AA/TT CC/GG AT 

    9     7     9
    5     13    5
    9     8     8

如何匹配列名的反向恭维,并将其与另一列的名称合并。你知道吗

注意:我已经有了一个函数来查找字符串的反向恭维


Tags: 数据函数字符串名称示例顺序技术at
1条回答
网友
1楼 · 发布于 2024-04-19 23:12:20

我建议使用pd.concat创建一个新框架:

new_df = pd.concat([df[['AA', 'TT']].sum(1).rename('AA/TT'),
                    df[['CC', 'GG']].sum(1).rename('CC/GG'),
                    df['AT']], axis=1)

>>> new_df
   AA/TT  CC/GG  AT
0      9      7   9
1      5     13   5
2      9      8   8

一般来说,你可以在一个列表中完成。给出相反的恭维:

reverse_compliments = [['AA','TT'], ['CC','GG']]

在原始的dataframe列中找到那些不是反向恭维的值(这里可能有更好的方法,但这是可行的):

reverse_compliments.append(df.columns.difference(
    pd.np.array(reverse_compliments)
    .flatten()))

使用pd.concat和列表理解:

new_df = pd.concat([df[x].sum(1).rename('/'.join(x)) for x in reverse_compliments],
                   axis=1)

>>> new_df
   AA/TT  CC/GG  AT
0      9      7   9
1      5     13   5
2      9      8   8

相关问题 更多 >