Pandas DataFrame 筛选条件逻辑运算错误解析
在使用 Pandas DataFrame 进行数据筛选时,当多个逻辑条件同时存在时,需要使用圆括号明确指明逻辑运算的优先级。例如,以下代码片段演示了一个常见错误:
df = pd.read_csv('Nowcoder.csv', sep = ',')
r = df[df['Language'] == 'CPP' & df['Graduate_year'] != 2018 & df['Level'] == 7]
print(r)
该代码片段意图筛选出满足以下条件的行:
- 语言为 'CPP'
- 毕业年份不为 2018
- 等级为 7
然而,由于 Python 中逻辑运算符的优先级,“&”(按位与)比“==”(等于)更高,因此上面的代码实际执行的是:
r = df[(df['Language'] == 'CPP' & df['Graduate_year']) != 2018 & (df['Level'] == 7)]
这与我们的预期不符。为了避免这种错误,需要使用圆括号明确指明逻辑运算的优先级,如下所示:
r = df[(df['Language'] == 'CPP') & (df['Graduate_year'] != 2018) & (df['Level'] == 7)]
通过使用圆括号,我们确保了三个逻辑条件按照预期顺序进行运算,从而获得正确的结果。
原文地址: https://www.cveoy.top/t/topic/nxi4 著作权归作者所有。请勿转载和采集!