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

如何提取矩阵指定列的所有非零值生成新矩阵或数据框

提取矩阵/数据框指定列非零值的实现方法

核心逻辑非常简单:先定位到你要提取的目标列,再筛选出该列值不等于0的记录即可,以下给出两种最常用数据分析环境的实现代码。

R 语言实现

首先构造你给出的示例数据:

# 构建示例数据框
raw_df <- data.frame(
  A = c(1, 2, 0),
  B = c(3, 4, 0),
  C = c(0, 0, 3)
)

基础R(无第三方依赖)写法

如果你需要输出结果保留二维数据框/矩阵结构,用下面的代码:

# 提取C列非零值,保留数据框结构
new_df <- raw_df[raw_df$C != 0, "C", drop = FALSE]

参数drop = FALSE是用来防止R自动把单列结果降维成向量的,如果你只需要拿到非零值的一维向量,直接写c_non_zero <- raw_df$C[raw_df$C != 0]就行。

tidyverse 流派写法

如果你日常用dplyr做数据处理,可以用更易读的管道写法:

library(dplyr)
new_df <- raw_df %>%
  select(C) %>%
  filter(C != 0)

针对你给出的示例数据,以上两种写法得到的new_df结果一致,内容为:

C
3 3

注意:如果你的C列存在缺失值NA,请把筛选条件替换为!is.na(C) & C != 0,避免缺失值导致的筛选异常。

Python (pandas) 实现

如果是pandas数据框结构,实现逻辑完全一致:

import pandas as pd
# 构建示例数据
raw_df = pd.DataFrame({
    "A": [1, 2, 0],
    "B": [3, 4, 0],
    "C": [0, 0, 3]
})
# 提取C列非零值,保留DataFrame结构
new_df = raw_df.loc[raw_df["C"] != 0, ["C"]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:01:28