我对Pandas很陌生,但想在与R合作一段时间之后尝试一下。
我遇到的一个问题是弄清楚为什么过滤器不能用于我的一个数据帧。我有一个包含多个列的数据框data_df
,其中一列是c
,其中包含国家/地区名称。我正在尝试过滤掉c == None
。
我的第一次尝试就是这样做:
countries_df = data_df[data_df.c != None]
然而,这产生了0行。然而,这有效:
countries_df = data_df[~data_df.c.isin([None])]
有人可以解释原因吗?似乎从Pandas doc,第一个应该能够正确过滤。
一些示例行:
_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 :(得分:10)
在比较平等时,pandas和Numpy似乎特别对待None
。在pandas中,None
应该像NaN,代表缺失值。要查找值不是无(或nan
)的行,您可以执行data_df[data_df.c.notnull()]
(或data_df[~data_df.c.isnull()]
)。