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

Pandas新增Col2列:仅Col1无逗号行赋值其余为None的实现问题

问题原因

你写的for循环存在逻辑错误:每次满足条件时执行的df['Col2'] = df['Col1']是对整个Col2列赋值,而非对应行,所以最终结果只会被最后一次满足条件的操作覆盖全列。

正确实现(推荐向量化操作,性能远高于循环,适合数千行量级数据)

首先生成符合要求的初始Col2:

# 不包含逗号的行赋值Col1的值,其余设为None
df['Col2'] = df['Col1'].where(~df['Col1'].str.contains(','), other=None)

然后执行向下填充None的操作:

# 向下填充空值
df['Col2'] = df['Col2'].ffill()

如果你确实需要用for循环实现,正确写法如下:

for idx, val in enumerate(df['Col1']):
    if ',' not in val:
        df.loc[idx, 'Col2'] = val
    else:
        df.loc[idx, 'Col2'] = None
# 后续同样用ffill做向下填充
df['Col2'] = df['Col2'].ffill()

效果验证

运行上述代码后得到的df结构如下:

Col1Col2
ApplesApples
Bananna, PearApples
Suns, Moons, StarsApples
Orange, Blue, GreenApples

完全符合你后续要做向下填充的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:00:02