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

如何找出在95%列中存在的数据项?(Python/R实现)

解决方案

R 实现方法

假设你的数据框是df,我们需要统计每个元素在多少个不同列中出现,再筛选出现列数为19或20的项:

方法1:使用tidyverse工具链

library(tidyverse)

# 1. 将宽表转为长格式,保留列名信息
long_df <- df %>%
  pivot_longer(cols = everything(), names_to = "column", values_to = "item") %>%
  # 2. 去除同一列内的重复项(避免同一列多次计数)
  distinct(column, item)

# 3. 统计每个item出现的列数,筛选符合条件的项
result <- long_df %>%
  count(item, name = "column_count") %>%
  filter(column_count %in% c(19, 20))

# 查看结果
print(result)

方法2:基础R实现

如果不想加载额外包,可以用基础R:

# 1. 收集每一列的唯一元素,记录所属列
item_list <- lapply(names(df), function(col) {
  data.frame(item = unique(df[[col]]), column = col)
})
long_df <- do.call(rbind, item_list)

# 2. 去重并统计列数
count_table <- table(long_df$item)
# 3. 筛选列数19或20的项
result <- names(count_table)[count_table %in% c(19, 20)]

# 查看结果
print(result)

Python 实现方法

用pandas库来处理,步骤如下:

import pandas as pd

# 假设你的数据框是df
# 1. 创建字典,记录每个item出现的列集合
item_columns = {}
for col in df.columns:
    # 获取当前列的唯一元素,若有缺失值可通过dropna()去除
    unique_items = df[col].dropna().unique()
    for item in unique_items:
        if item not in item_columns:
            item_columns[item] = set()
        item_columns[item].add(col)

# 2. 统计每个item的列数,筛选符合条件的项
result = [item for item, cols in item_columns.items() if len(cols) in (19, 20)]

# 查看结果
print(result)

补充说明

  • 上述代码默认同一列内的重复元素只算一次(统计的是元素“存在于多少列”,而非总出现次数)
  • 如果数据中存在缺失值,记得提前处理,避免缺失值被误统计

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:35:16