为列过滤熊猫数据框==无
Posted
技术标签:
【中文标题】为列过滤熊猫数据框==无【英文标题】:Filter pandas data frame for col == None 【发布时间】:2014-12-02 16:20:35 【问题描述】:我有一个包含多个列的数据框 data_df
,其中之一是包含国家名称的 c
。如何过滤掉c == None
所在的行。
我的第一次尝试是这样做:
countries_df = data_df[data_df.c != None]
但是,这产生了 0 行。然而,这奏效了:
countries_df = data_df[~data_df.c.isin([None])]
有人能解释为什么吗?从 Pandas 文档看来,第一个应该能够正确过滤。
一些示例行:
_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
【问题讨论】:
您能否提供一个示例数据集来演示该问题? 我在上面添加了一些示例行。 【参考方案1】:在比较相等性时,pandas 和 Numpy 似乎特别对待None
。在 pandas 中,None
应该类似于 NaN,表示缺失值。要查找值不是 None(或 nan
)的行,您可以执行 data_df[data_df.c.notnull()]
(或 data_df[~data_df.c.isnull()]
)。
【讨论】:
使用notnull
更易读,所以data_df[data_df.c.notnull()]
以上是关于为列过滤熊猫数据框==无的主要内容,如果未能解决你的问题,请参考以下文章