2014-07-14 61 views
0

我是python的新手,並且在一件簡單的任務中掙扎。我有一個字母數字列被稱爲區域。它具有以/如/健康/血壓等和整數值開始的條目。所以,通常一些看法是這樣的:從python中的字母數字列中刪除整數值

/health/blood pressure 
/health/diabetes 
7867 
/fitness 
9087 
/health/type1 diabetes 

現在我要刪除所有與整數值的行/個案。因此,在將數據集導入python shell後,它將區域顯示爲對象。我打算用一種正則表達式來解決這個問題。所以我做了以下工作:

pattern='/' 
data.region=Series(data.region) 
matches=data.region.str.match(pattern) 
matches 

這裏給出了一個布爾對象來解釋每個模式是否在數據集中。所以我得到這樣的東西:

0 true 
1 false 
2 true 
3 true 
......... 
so on. 

現在我被卡住了進一步如何刪除匹配行布爾對象與假標記。如果陳述不起作用。如果任何人都可以提供某種幫助,那會很棒!

謝謝!

+0

只是'data [matches]' –

回答

1

看起來好像你在使用熊貓框架。所以我不能完全肯定這是否工作:

你可以試試:

matches = [i for i in data.region if i.str.match(pattern)] 

在Python中這被稱爲列表理解,通過每一個條目變成在data.region並檢查您的模式,並把它在列表中,如果模式匹配(並且'if'之後的表達式因此爲真)。

參見:https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions

如果要映射的每一個區域,你可以嘗試創建的地區名單映射具有以下字典-理解的字典:

matches = {region: [i for i in data.region if i.str.match(pattern)] for region in data} 

參見: https://docs.python.org/2/tutorial/datastructures.html#dictionaries

然而,你絕對要離開熊貓框架的領域。這最終可能會失敗的地區不是一個整數/字符串,而是一個列表本身(如援助我不知道熊貓足以判斷)。

在這種情況下,你可以嘗試:

matches = {} 
for region in list_of_regions: 
    matches[region] = [i for i in data.region if i.str.match(pattern)] 

這基本上是相同的只是區域和字典理解給定的名單中作出了明確的循環。

+0

謝謝!!這工作。我做到了這兩點!!即使正如上面的評論數據[火柴]所示,也解決了我的任務。另外,我想爲每個區域形成映射變量,例如:區域1的每個非整數值的區域1,區域2,區域n。使用列表理解是否可行? – user2906657

+0

如果答案解決了您的問題,請考慮接受它。 – Serbitar

+0

我想把這兩列放在一起。我的意思是,在得到100個有效的區域值之後,我想添加一個帶有區域1,區域2的區域變量的第一個,第二個和隨後的條目的column_map。上面的代碼會產生兩個變量嗎? – user2906657