Python如何基于DataFrame多列条件高效生成新列(不使用循环)
实现方案
pandas原生向量化操作是最高效的实现方式,完全无需Python层面的循环,底层基于C实现,处理百万级以上行数据也能保持极高性能。
最简写法(适用于A-E列仅包含0/1的场景)
直接按行判断是否存在非0值,将布尔结果转为整数即可:
# 手动指定列名 df['col'] = df[['A', 'B', 'C', 'D', 'E']].any(axis=1).astype(int) # 若A-E是连续列,可直接用切片选择,无需逐个写列名 df['col'] = df.loc[:, 'A':'E'].any(axis=1).astype(int)
严谨写法(兼容A-E列存在其他值的场景)
如果A-E列可能存在0/1以外的数值,需要精准匹配1的判断规则,可先做等值判断再按行聚合:
df['col'] = df.loc[:, 'A':'E'].eq(1).any(axis=1).astype(int)
内容的提问来源于stack exchange,提问作者ZIO
相关产品推荐
相关产品推荐

