Pandas单行创建布尔序列时,索引切片[0:1]的过滤对象解析
问题原因解析
这是Python运算符优先级导致的问题,核心是代码执行顺序不符合你的预期:
分两行写时:
先执行ah['_merge'] == 'left_only',将ah的_merge列每个元素与字符串'left_only'比较,得到布尔Seriestah;再执行tah[0:1]对这个布尔Series做切片,结果符合预期。单行写
ah['_merge']=='left_only'[0:1]时:
Python中索引/切片操作[]的优先级高于比较运算符==,所以会先执行'left_only'[0:1]——也就是对字符串'left_only'做切片,取前1个字符得到'l'。此时代码实际等价于ah['_merge'] == 'l',即把_merge列的每个元素和字符'l'做比较,结果自然和你想要的完全不符。
正确的单行写法
如果要合并成一行,需要用括号强制先执行比较逻辑,再对结果切片:
(ah['_merge'] == 'left_only')[0:1]
内容的提问来源于stack exchange,提问作者anumberofthem
相关产品推荐
相关产品推荐

