如何移除DataFrame中包含至少一个零值的行?
移除DataFrame中含至少一个零值行的实现方法
原始DataFrame
Param1 Param2 datetime ts 1669246574000 6.06 -1.80 22-24-11 01:36:14 UTC 1669242973000 6.50 -1.73 22-24-11 00:36:13 UTC ... ... ... ... 1668918964000 6.00 0.00 22-20-11 06:36:04 UTC 1668915364000 0.00 1.6 22-20-11 05:36:04 UTC
移除零值后的结果
Param1 Param2 datetime ts 1669246574000 6.06 -1.80 22-24-11 01:36:14 UTC 1669242973000 6.50 -1.73 22-24-11 00:36:13 UTC
实现方法
利用pandas的布尔索引结合all()方法即可完成筛选:
方法1:指定数值列筛选
针对Param1和Param2两个数值列,筛选出两行都不为0的记录:
# 假设你的DataFrame名为df filtered_df = df[(df[['Param1', 'Param2']] != 0).all(axis=1)]
方法2:排除非数值列后筛选
如果后续会新增数值列,可排除datetime这类非数值列,检查其余所有列是否无零值:
filtered_df = df[(df.drop('datetime', axis=1) != 0).all(axis=1)]
原理说明:
df[指定列] != 0生成布尔DataFrame,标记每个位置是否不等于0;.all(axis=1)验证每行的所有元素是否都为True(即该行无零值);- 最终通过布尔索引提取符合条件的行。
内容的提问来源于stack exchange,提问作者devaskim
相关产品推荐
相关产品推荐

