我对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
解决方法:
看来pandas和Numpy在比较平等时特别对待None.在熊猫中,None应该像NaN一样,代表缺失值.要查找值不是None(或nan)的行,可以执行data_df [data_df.c.notnull()](或data_df [~data_df.c.isnull()]).