为何两段Python Pandas代码输出结果存在差异?
解析两段Pandas代码的输出差异
一、第一段代码为何过滤掉False值
首先,dr = cars['drives_right']生成的是一个布尔型Series,每个元素对应cars DataFrame里每一行的drives_right值(True/False)。
当执行cars[dr]时,这是Pandas的布尔索引功能:用布尔Series对DataFrame索引,会自动筛选出布尔值为True的行,所以最终只保留了US、RU、MOR、EG这几行(对应drives_right为True的记录)。
最后sel = [cars[dr]]是把这个筛选后的DataFrame放进了一个单元素列表,所以输出结果外层多了一层方括号。
二、两段代码的数据结构差异
两段代码的核心区别在于对dr的使用方式:
- 第一段用
cars[dr]对原DataFrame做了布尔索引筛选,得到的是一个新的DataFrame,再把它存入单层列表 - 第二段
sel = [[dr]]没有操作原DataFrame,只是把原始的布尔Seriesdr直接嵌套进了双层列表里,所以输出的是完整的布尔Series,外层套了两层方括号
内容的提问来源于stack exchange,提问作者malcolm.waters
相关产品推荐
相关产品推荐

