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

使用Pandas分析数据集:筛选前16列与后16列相等的行

筛选前16列与后16列相等的行

没问题,我来帮你搞定这个筛选需求!你已经完成了数据读取和删除第一列的步骤,接下来只需要添加几行向量化的逻辑代码,就能高效筛选出前16个元素和后16个元素完全相等的行,具体实现如下:

完整可运行代码

import pandas as pd
import numpy as np

# 读取数据集,指定无表头
data = pd.read_csv('enummixed.txt', header=None, low_memory=False)
# 删除第一列
data = data.drop(data.columns[[0]], axis=1)

# 核心筛选逻辑
# 提取前16列和后16列数据
first_16_cols = data.iloc[:, :16]
last_16_cols = data.iloc[:, 16:]

# 生成每行的匹配掩码:只有当该行所有对应位置元素都相等时为True
match_mask = first_16_cols.eq(last_16_cols).all(axis=1)

# 筛选出符合条件的行
filtered_data = data[match_mask]

# 查看筛选结果的前几行(可选)
print(filtered_data.head())

代码细节解释

  • iloc[:, :16] 和 iloc[:, 16:]:用位置索引快速分割出前16列和后16列,这是pandas处理列分割最高效的方式
  • eq(last_16_cols):逐元素比较两部分数据,返回一个布尔值组成的DataFrame,每个位置表示对应元素是否相等
  • .all(axis=1):对每行的布尔值取逻辑与,只有当该行所有16对元素都相等时,才会返回True
  • 最后用这个布尔掩码match_mask去原数据中筛选,就能得到所有符合条件的行

小提示

如果你的数据里存在缺失值(NaN),直接用eq比较会把包含NaN的行判定为不相等。如果需要忽略缺失值的影响,可以先给缺失值填充一个数据中不存在的占位值,比如:

# 用-999填充缺失值后再比较(替换成你数据里没有的数值即可)
match_mask = first_16_cols.fillna(-999).eq(last_16_cols.fillna(-999)).all(axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:00:48