2017-07-06 28 views
0

中的值> X,我想使用Python來查找列C0> =中的模式的連續出現次數比閾值X ,並且對於下面的示例,如果閾值X = 3並且Y是40,則另一列prcC0中的對應值的數量大於閾值Y如何按順序出現的字符串進行分組,並檢查下列數據結構的另一列

,那麼應當輸出算法。對於字符串模式B,行2:4出現> = 3且對應的prcC0值> = 40

該算法應該掃描整個數據幀以獲得這樣的順序模式。

Seq nMin nUniqe n3WJ prc3WJ C0 prcC0 
0 s00000 482 9 172 35.68 A 1.65 
1 s00001 503 10 193 38.37 A 15.33 
2 s00002 415 9 221 53.25 B 44.03 
3 s00003 325 10 155 47.69 B 42.99 
4 s00004 429 10 175 40.79 B 43.37 
+0

你應該寫一些算法,對其進行測試,並詢問具體問題,當你遇到你不能修復的問題。這太寬了 –

+0

什麼是這個_data structure_?這是一個csv?它是像「Pandas」還是「R」中的數據框?需要更多細節。 – pstatix

回答

0

讓我們用熊貓:

import pandas as pd 
df 

Seq nMin nUniqe n3WJ prc3WJ C0 prcC0 
0 s00000 482  9 172 35.68 A 1.65 
1 s00001 503  10 193 38.37 A 15.33 
2 s00002 415  9 221 53.25 B 44.03 
3 s00003 325  10 155 47.69 B 42.99 
4 s00004 429  10 175 40.79 B 43.37 

X = 3 
Y = 40 
df_out = df.assign(Cond=df.prcC0 >= Y) 
df_out.groupby((~df_out['Cond']).cumsum()).filter(lambda x: x.shape[0] >= X+1).query('Cond == True') 

輸出:

 Seq nMin nUniqe n3WJ prc3WJ C0 prcC0 Cond 
2 s00002 415  9 221 53.25 B 44.03 True 
3 s00003 325  10 155 47.69 B 42.99 True 
4 s00004 429  10 175 40.79 B 43.37 True 
相關問題