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

仅当另一列有值时填充指定列的Pandas实现问题

问题解决:仅在col1非空时为col3填充指定字符串

问题原因

现有代码的核心问题是过滤条件错误:
你的col1是数值型列,空值在Pandas中以NaN表示,而非空字符串''。用df['col1'] != ''判断时,数值与空字符串类型不匹配,会返回True,导致所有行都被选中填充。

修正后的代码

import pandas as pd
from datetime import datetime, timedelta

# 日期处理函数
def add_days_to_date(date, days):
    subtracted_date = pd.to_datetime(date) + timedelta(days=days)
    return subtracted_date.strftime("%m-%d")

# 示例数据(加入NaN模拟空值场景)
df = pd.DataFrame(
    {
        'col1': [12, 34, None, 23, 12, None, 53, 12, 43, 12],
        'col2': ['USD', 'CAD', 'USD', 'USD', 'CAD', 'USD', 'USD', 
                 'EURO', 'USD', 'USD'],
    }
)

date = datetime.date.today()
date_format = date.strftime('%m-%d')
target_str = f"Opened {date_format} will need an update {add_days_to_date(date, 30)}"

# 初始化col3为空字符串
df['col3'] = ""
# 仅给col1非空的行填充目标字符串
df.loc[df['col1'].notna(), 'col3'] = target_str

关键说明

  • df['col1'].notna()是Pandas中判断数值列非空(非NaN)的标准方法,能精准定位目标行。
  • 先将col3初始化为空字符串(或pd.NA),再通过loc赋值,确保仅符合条件的行被填充。
  • 若col1是字符串型列,空值为'',则可改用df['col1'] != ''作为过滤条件。

内容的提问来源于stack exchange,提问作者Jose Daniel Rojas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:46:11