如何用Pandas高效检查DataFrame指定值并生成行级布尔列表
Pandas高效实现你的两个需求
嘿,作为Pandas新手,你的这两个需求完全可以用Pandas的内置矢量化方法高效解决,不用写繁琐的循环,咱们一步步来拆解:
1. 生成检查'B.Tech'的布尔DataFrame
直接用相等比较运算符就能快速生成每个位置是否等于'B.Tech'的布尔DataFrame,这是Pandas原生的高效操作,比手动遍历快得多:
# 生成布尔DataFrame,每个元素为True表示该位置值是'B.Tech' bool_df = df == 'B.Tech' print(bool_df)
运行后会得到如下结果:
Name Branch Score Result 0 False True False False 1 False False False False 2 False False False False 3 False True False False 4 False False True False
2. 基于前4列生成每行的布尔判断列表
利用Pandas的any()方法,指定按行(axis=1)判断——只要该行前4列有至少一个True就返回True,最后转成列表即可:
# 取前4列,按行判断是否存在至少一个True,再转换为列表 result_list = bool_df.iloc[:, :4].any(axis=1).tolist() print(result_list)
运行结果正好是你期望的:
[True, False, False, False, True]
额外简洁写法
如果不想单独生成中间的布尔DataFrame,也可以把两步合并成一行代码,效率完全一样:
result_list = (df.iloc[:, :4] == 'B.Tech').any(axis=1).tolist()
直接对前4列做相等比较,再按行判断,代码更紧凑。
内容的提问来源于stack exchange,提问作者Gaz Zhao
相关产品推荐
相关产品推荐

