如何使用Pandas根据y列布尔值True提取x列值至列表
Pandas根据布尔列提取对应列值为列表
数据结构
你拥有的DataFrame(名为xy)结构如下:
| x | y |
|---|---|
| value1 | True |
| value2 | True |
| value3 | False |
| value4 | True |
| value5 | False |
| value6 | True |
需求
根据y列的布尔值True,提取对应x列的值并转换为列表,期望结果:['value1', 'value2', 'value4', 'value6']
错误代码
你尝试的代码逻辑有误:
lst = (xy['x'].loc[:, xy['x'].isin(xy['y'])]).tolist()
正确解法
方法1:布尔索引直接筛选
这是最简洁的写法:
lst = xy[xy['y']]['x'].tolist()
方法2:使用loc规范索引
如果更倾向于明确的索引语法:
lst = xy.loc[xy['y'], 'x'].tolist()
错误原因
原代码中xy['x'].isin(xy['y'])是检查x列的字符串值是否存在于y列的布尔值集合中,两者类型不匹配,无法筛选出正确结果。正确逻辑是直接用y列的布尔值作为行筛选条件,提取符合条件行的x列数据后转为列表。
内容的提问来源于stack exchange,提问作者Jamie Jones
相关产品推荐
相关产品推荐

