這個問題與my previous question有關。鑑於以下數據框:如何從數據框中提取特定序列?
df =
ID TYPE VD_0 VD_1 VD_2 VD_3 VD_4 VD_5
1 ABC V1234 aaa bbb 456 123 564
2 DBC 456 A45 aaa V1234 bbb 564
3 ABD 456 V1234 bbb ccc 456 123
4 ABD ccc aaa 123 V1234 SSW 123
還有就是VD_0
目標值以下列表 - VD_5
:
myList = [V1234,456,A45]
我想只有在df
有2個或更多的「序貫」 occurances那些行的myList
列VD_0
- VD_5
,的值,但允許它們之間有任何其他值(任何其他不屬於myList
的值)。例如,這些允許值可能是aaa
,bbb
,ccc
等
結果應該是這樣:
result =
ID TYPE Col_0 Col_1 Col_2
1 ABC V1234 456
2 DBC 456 A45 V1234
3 ABD 456 V1234 456
在result
我想在Col_
列顯示從myList
只值,而忽略其餘的價值。
下面的代碼工作正常,但它允許在不出現任何myList
值之間的它並沒有考慮到:
subset = df.filter(like='VD_')
df[subset.isin(myList).rolling(2, axis=1).sum().max(axis=1)>=2]
任何幫助將不勝感激。
是否有可能在最終結果(類似於我的示例)中僅顯示來自'myList'的值。另外,請你解釋爲什麼你使用'sum(axis = 1)> 1',但不是'sum(axis = 1)> = 2' – Dinosaurius
請檢查我編輯過的naswer。 – jezrael
它看起來做我需要的,但在我的真實數據集中,我有超過100列'VD_'。最終結果是否可能不顯示'aaa','ccc'和其他所有不在'myList'中的值? – Dinosaurius