假设有一个数据帧,如

import pandas as pd 
import numpy as np

df = pd.DataFrame({'col1':[1,2,3,4,5],
                   'col2':[11,12,np.nan,24,np.nan]})

df
    col1    col2
0   1       11.0
1   2       12.0
2   3       NaN
3   4       24.0
4   5       NaN

我希望根据多个条件 Select 非NaN行,例如(1)col1<4和(2)col2中的非nan.下面是我的代码,但我不知道为什么我没有得到前两行.有什么 idea 吗?谢谢

df1 = df[(df['col1'] < 4 & df['col2'].notna())]
df1

col1    col2

推荐答案

因为operator precedence(位运算符(例如&)的优先级高于比较运算符(例如<).

当前,您的掩码被判断为

>>> df['col1'] < (4 & df['col2'].notna())

0    False
1    False
2    False
3    False
4    False
dtype: bool

这就是为什么没有 Select 任何行.

>>> df1 = df[(df['col1'] < 4) & df['col2'].notna()]
>>> df1

   col1  col2
0     1  11.0
1     2  12.0

Python相关问答推荐

替换字符串中的多个重叠子字符串

numba jitClass,记录类型为字符串

Python中的嵌套Ruby哈希

数据抓取失败:寻求帮助

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

Python逻辑操作作为Pandas中的条件

与命令行相比,相同的Python代码在Companyter Notebook中运行速度慢20倍

通过ManyToMany字段与Through在Django Admin中过滤

Tkinter菜单自发添加额外项目

将scipy. sparse矩阵直接保存为常规txt文件

未调用自定义JSON编码器

为什么'if x is None:pass'比'x is None'单独使用更快?

统计numpy. ndarray中的项目列表出现次数的最快方法

如何从数据框列中提取特定部分并将该值填充到其他列中?

Django更新视图未更新

具有不同坐标的tkinter canvs.cocords()和canvs.moveto()

来自任务调度程序的作为系统的Python文件

了解如何让库认识到我具有所需的依赖项

Django REST框架+Django Channel->;[Errno 111]连接调用失败(';127.0.0.1';,6379)

Wagail:当通过外键访问索引页时,如何过滤索引页的子项