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

如何按条件清除DataFrame指定单元格值生成新数据框

Pandas 按条件清空指定单元格实现方案

核心逻辑是先定位所有符合清空规则的行,再对这些行的目标列赋值空值即可,全程不需要删除整行或整列,也不会改动其他单元格的原有内容。


完整实现步骤

  1. 先构造和需求匹配的测试数据集,对应4个样本A/B/C/D的5列原始数据:
import pandas as pd
import numpy as np

# 构造示例原始DataFrame
df = pd.DataFrame({
    'Sample': ['A', 'B', 'C', 'D'],
    'Size_1': [3, 2, 5, 1],
    'Height_1': [10, 8, 15, 6],
    'Size_2': [4, 6, 6, 5],
    'Height_2': [9, 12, 14, 9]
})
  1. 生成行匹配掩码,标记出所有满足「Size_2 - Size_1 <= 2 且 Height_2 <= Height_1」规则的行:
# 条件判断用&表示逻辑与,每个判断条件要加括号
clear_row_mask = (df['Size_2'] - df['Size_1'] <= 2) & (df['Height_2'] <= df['Height_1'])
  1. 复制原始数据生成独立的新数据框,对标记行的Size_2、Height_2列赋值空值:
# 复制原数据避免修改原始df
new_df = df.copy()
# 定位到需要修改的位置,赋值空值(数值列空值用np.nan即可)
new_df.loc[clear_row_mask, ['Size_2', 'Height_2']] = np.nan

运行结果

执行完代码后new_df的输出完全符合预期:

  • 样本A、C满足清空规则,对应Size_2、Height_2单元格为空
  • 样本B、D不满足规则,原有数值全部保留

输出效果参考:

SampleSize_1Height_1Size_2Height_2
A310NaNNaN
B286.012.0
C515NaNNaN
D165.09.0

注意事项

  • 如果不需要保留原始DataFrame,可以跳过copy()步骤直接在原df上执行loc赋值操作
  • 数值列的np.nan空值导出到Excel/CSV时会自动显示为空白单元格,不需要额外做格式转换
  • 多条件判断时每个单独的条件表达式必须用括号包裹,否则会因为运算符优先级问题报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:03:28