找到大熊猫data.frame每两行的字符串之间的差异

问题描述 投票:1回答:1

我是python的新手,并且为此苦苦挣扎了一段时间。我有一个看起来像这样的文件:

    name   seq
1   a1     bbb
2   a2     bbc
3   b1     fff
4   b2     fff
5   c1     aaa
6   c2     acg

其中name是字符串的名称,seq是字符串。我想要一个新的列或一个新的数据框,以指示每两行之间没有重叠的差异数。例如,我想要名称[a1-a2],然后是[b1-b2],最后是[c1-c2],序列之间的差异数。

所以我需要这样的东西:

    name   seq   diff  
1   a1     bbb    NA   
2   a2     bbc    1
3   b1     fff    NA
4   b2     fff    0
5   c1     aaa    NA
6   c2     acg    2

非常感谢您的帮助

python string pandas difference
1个回答
0
投票

似乎您要使用成对的jaccard distance。这是使用groupbyscipy.spatial.distance.jaccard的一种方法:

scipy.spatial.distance.jaccard

from scipy.spatial.distance import jaccard
g = df.groupby(df.name.str[0])

df['diff'] = [sim for _, seqs in g.seq 
              for sim in [None, jaccard(*map(list,seqs))]]
© www.soinside.com 2019 - 2024. All rights reserved.