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

如何筛选Pandas DataFrame中排序后唯一元素差值一致的列

问题核心修正点

  • 你现有代码获取的单列唯一值没有做单独排序:对整个DataFrame排序不会影响单列unique结果的顺序,必须对每列的unique值单独排序才能得到正确的相邻差值
  • 求diff的循环变量存在笔误,会导致运行报错
  • 判断差值全相等可以直接用np.all()方法实现

完整可运行代码

import numpy as np
import pandas as pd

first = [20, 10, 40, 30, 10]
sec = [94, 74, 34, 80]
# 给列命名匹配你预期的输出名称
df = pd.DataFrame(list(zip(first,sec)), columns=['first', 'sec'])

match_cols = []
for col in df.columns:
    # 取当前列唯一值并升序排序
    unique_sorted = np.sort(df[col].unique())
    # 唯一值不足2个的场景可按需调整是否计入结果,这里默认跳过
    if len(unique_sorted) < 2:
        continue
    # 计算相邻差值
    diff_arr = np.diff(unique_sorted)
    # 判断所有差值完全相等
    if np.all(diff_arr == diff_arr[0]):
        match_cols.append(col)

print(match_cols)

运行输出为你预期的['first']

关键逻辑说明

  • 单列唯一值排序:np.sort(df[col].unique()) 保证拿到当前列从小到大排列的唯一值,避免原数据出现顺序导致差值计算错误
  • 差值一致判断:np.all(diff_arr == diff_arr[0]) 会逐位对比差值数组的所有元素和第一个元素是否完全一致,所有相等才会返回True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:27:01