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

如何移除Pandas DataFrame中含至少两个零值的行?

处理加速度传感器无效数据:移除至少两个轴为0的行

步骤1:构造示例数据(可选,用于测试)

先创建包含有效和无效数据的示例DataFrame,方便验证逻辑:

import pandas as pd

data = {
    'timestamp': ['2024-05-20 10:00:00', '2024-05-20 10:00:01', '2024-05-20 10:00:02', '2024-05-20 10:00:03'],
    'x': [0.5, 0, 0, 1.2],
    'y': [0.3, 0, 1.5, 0],
    'z': [0.1, 0.8, 0, 0]
}
df = pd.DataFrame(data)

步骤2:识别无效行

通过计算每行x、y、z三个轴中0的数量,筛选出数量≥2的行:

# 计算每行x/y/z列中0的个数
zero_counts = df[['x', 'y', 'z']].eq(0).sum(axis=1)

# 查看所有无效行
invalid_rows = df[zero_counts >= 2]
print("无效数据行:")
print(invalid_rows)

步骤3:移除无效行

有两种方式得到清理后的数据集:

方式1:直接筛选有效行(推荐,生成新DataFrame)

clean_df = df[zero_counts < 2]

方式2:在原DataFrame上删除无效行

# 获取无效行的索引
invalid_indices = df[zero_counts >= 2].index
# 原地删除无效行
df.drop(invalid_indices, inplace=True)

一行代码简化操作

如果不需要单独查看无效行,可直接用一行代码完成清理:

clean_df = df[df[['x', 'y', 'z']].eq(0).sum(axis=1) < 2]

代码逻辑说明

  • df[['x', 'y', 'z']].eq(0):生成布尔值矩阵,标记每个轴的值是否为0
  • .sum(axis=1):按行求和,得到每行中0的总数
  • sum(axis=1) < 2:保留0的总数小于2的行(即最多一个轴为0的有效数据)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:35:04