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

如何按行条件移除DataFrame列值或按需填充列数据?

DataFrame逐行条件处理解决方案

需求说明

  • 当column1有值时,清空对应行的column2和column3
  • 仅在column1为空的行,通过column0调用do_something()填充column2和column3

原数据示例

column1  column2    column3
    
ABCDEFG  ABCDEFG    EFG     
ABCDEFG  ABCDEFG    EFG
ABC     
ABCDEFG  ABCDEFG    EFG
           ABCDEFG  EFG

期望结果

column1  column2    column3
        

ABCDEFG  
ABCDEFG  
ABC     
ABCDEFG

           ABCDEFG  EFG

原代码问题

之前的代码用if data['column1'].empty:做全局列判断,而非逐行逻辑,导致无法实现需求。

正确实现代码

# 先处理需求1:column1有值的行,清空column2和column3
mask_has_col1 = data['column1'].notna() & data['column1'].str.strip().ne('')
data.loc[mask_has_col1, ['column2', 'column3']] = None  # 需空字符串则替换为''

# 处理需求2:column1为空的行,用column0填充column2和column3
mask_no_col1 = data['column1'].isna() | data['column1'].str.strip().eq('')
data.loc[mask_no_col1, 'column2'] = data.loc[mask_no_col1, 'column0'].apply(do_something)
data.loc[mask_no_col1, 'column3'] = data.loc[mask_no_col1, 'column0'].apply(do_something)

代码解释

  1. mask_has_col1:生成布尔索引,标记column1非空且非空白的行
  2. 通过loc定位目标行,将column2和column3设为空值(None/空字符串按需选择)
  3. mask_no_col1:生成布尔索引,标记column1为空或空白的行
  4. 仅对这些行,调用do_something()处理column0,填充到对应列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:39:59