2014-10-08 135 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