Pandas数据帧:使用第二列切片列索引切片列值

时间:2015-11-03 20:37:43

标签: python pandas

我试图在熊猫数据框架中创建一列微卫星图案。我有一列给出了图案的长度,另一列给出了整个微卫星。

这是感兴趣的列的一个例子。

     motif_len    sequence
0    3            ATTATTATTATT
1    4            ATCTATCTATCT
2    3            ATCATCATCATC

我想使用 motif_len 中的值对序列中的值进行切片,以给出每个微卫星的单个重复(motif)。然后,我想将所有这些主题添加为数据框中的第三列,以提供类似的内容。

     motif_len    sequence        motif
0    3            ATTATTATTATT    ATT
1    4            ATCTATCTATCT    ATCT
2    3            ATCATCATCATC    ATC

我尝试了一些没有运气的事情。

>>df['motif'] = df.sequence.str[:df.motif_len]
>>df['motif'] = df.sequence.str[:df.motif_len.values]

两者都是motif列,但所有值都是NaN。

我想我明白为什么这些不起作用。我将一个系列/数组作为切片中的上部索引而不是来自mot_len列的值传递。

我还尝试通过遍历每个系列创建一个系列 有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您可以在df pass apply上调用axis=1以逐行应用并使用列值对str进行切片:

In [5]:
df['motif'] = df.apply(lambda x: x['sequence'][:x['motif_len']], axis=1)
df

Out[5]:
   motif_len      sequence motif
0          3  ATTATTATTATT   ATT
1          4  ATCTATCTATCT  ATCT
2          3  ATCATCATCATC   ATC