2014-10-08 201 views
3

我對熊貓很新,但想在嘗試使用R一段時間後嘗試一下。Python Pandas:過濾數據幀

我遇到的一個問題是搞清楚爲什麼一個過濾器不適用於我的一個數據框。我有一個數據框data_df與多個列,其中之一是c其中包含國家名稱。我試圖過濾掉c == None的行。

我第一次嘗試這樣做:

countries_df = data_df[data_df.c != None] 

然而,這產生了0行。然而,這工作:

countries_df = data_df[~data_df.c.isin([None])] 

有人可以解釋爲什麼嗎?從熊貓文檔看來,第一個應該能夠正確過濾。

一些示例行:

_heartbeat_       a     al  c  cy  g 
0 NaN Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; H... en-US US Anaheim 15r91 
1 NaN Mozilla/4.0 (compatible; MSIE 7.0; Windows NT ... en-us None NaN ifIpBW 
2 NaN Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20... en-US,en;q=0.5 US Fort Huachuca 10DaxOu 
3 NaN Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; S... en-US US Houston TysVFU 
4 NaN Opera/9.80 (Android; Opera Mini/7.5.33286/29.3... en None NaN 10IGW7m 
5 NaN Mozilla/5.0 (compatible; MSIE 10.0; Windows NT... en-US US Mishawaka 13GrCeP 
6 NaN Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) G... en-US,en;q=0.5 US Hammond YmtpnZ 
7 NaN Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_5 li... en-us None NaN 13oM0hV 
8 NaN Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like ... en-us AU Sydney 15r91 
9 NaN Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKi... en-US,en;q=0.8 None NaN 109LtDc 
10 NaN Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like ... en-us US Middletown 109ar5F 
11 NaN Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like ... en-us US Germantown 107xZnW 
+0

你能提供一個示例數據集來證明這個問題嗎? – BrenBarn 2014-10-08 05:12:59

+0

我在上面添加了一些示例行。 – kk415kk 2014-10-08 05:25:09

回答

9

看來,熊貓和numpy的平等比較時治療None特別。在熊貓中,None應該像NaN,代表缺失值。要查找值不是無(或nan)的行,可以使用data_df[data_df.c.notnull()](或data_df[~data_df.c.isnull()])。

+2

稍微更具可讀性,以便使用'notnull'所以'data_df [data_df.c.notnull()]' – EdChum 2014-10-08 07:23:21