You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas筛选多列仅含同一方向或空值的可扩展实现方法

解决方案

完全不需要硬编码每个列的判断逻辑,以下两种方案都支持任意数量dir列自动适配,扩展性极强:

方案1:向量化高性能实现(推荐,适合大数据量)

核心逻辑:只要某行不同时出现up和down两个值,就符合筛选要求

# 1. 自动匹配所有dir开头+数字结尾的列,后续新增dir4/dir5无需修改代码
dir_cols = df1.filter(regex=r'^dir\d+$').columns
# 若dir列命名不统一,也可手动指定列列表:dir_cols = ['dir0','dir1','dir2','dir3']

# 2. 判断每行是否存在up、是否存在down
has_up = (df1[dir_cols] == 'up').any(axis=1)
has_down = (df1[dir_cols] == 'down').any(axis=1)

# 3. 保留不同时存在up和down的行
df_out = df1[~(has_up & has_down)]

方案2:直观逻辑实现(适合小数据量,逻辑易读)

核心逻辑:每行非空的方向值唯一值数量不超过1,就符合要求

dir_cols = df1.filter(regex=r'^dir\d+$').columns
mask = df1[dir_cols].apply(lambda row: row.dropna().nunique() <= 1, axis=1)
df_out = df1[mask]

两种方案运行结果都和你给出的预期输出完全一致。

内容的提问来源于stack exchange,提问作者Vineet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:24:03