2015-11-03 124 views
3

我試圖在熊貓數據框中創建一列微衛星圖案。我有一列給出了主題的長度,另一列有整個微型衛星。熊貓數據框:使用第二列切片索引值切片索引

以下是感興趣的列的示例。

 motif_len sequence 
0 3   ATTATTATTATT 
1 4   ATCTATCTATCT 
2 3   ATCATCATCATC 

我想使用的值,以切片中的值序列motif_len給每個微衛星的單個重複(基序)。然後,我想將所有這些圖案添加爲數據框中的第三列,以提供類似的內容。

 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] 

兩者都製作主題列,但所有的值都是NaN。

我想我明白爲什麼這些不起作用。我將一個序列/數組作爲切片中的上部索引而不是來自mot_len列的值。

我也嘗試通過遍歷每個創建一個系列 任何想法?

回答

3

您可以撥打apply在DF通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 
+0

謝謝!提供我正在尋找的確切結果。 – sam123