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

基于Pandas实现:Pixel Type列空白时新增Parent列

问题分析与修正方案

你的Python脚本存在两个核心问题:

  1. 缩进错误:Python对缩进语法要求严格,原代码中if、else块及内部代码的缩进不符合规范,会直接触发语法错误。
  2. 逻辑错误:判断逻辑与需求颠倒,原代码仅在Pixel Type非空时赋值Parent列,和你“空值行才填充Parent”的需求完全相反。

另外,iterrows()遍历行的效率较低,Pandas推荐用向量化操作处理这类批量数据任务,性能会更优。

修正后的向量化代码(符合需求)

import pandas as pd

# 读取CSV文件为DataFrame
df = pd.read_csv('your_file.csv')

# 初始化Parent列为空字符串
df['Parent'] = ''

# 批量赋值:当Pixel Type为空时,将对应行的Pixel Group / Pixel Name填入Parent列
df.loc[pd.isnull(df['Pixel Type']), 'Parent'] = df['Pixel Group / Pixel Name']

# 输出更新后的DataFrame
print(df)

拓展:类似Excel向下填充的场景

如果你的实际需求是将上方最近一行Pixel Type非空的Group/Name值,填充到下方所有Pixel Type为空的行的Parent列(这是Excel中常见的分组填充逻辑),可以用以下代码:

import pandas as pd

df = pd.read_csv('your_file.csv')

# 提取Pixel Type非空行的Group/Name值,向下填充空值
df['Parent'] = df.loc[~pd.isnull(df['Pixel Type']), 'Pixel Group / Pixel Name'].ffill()

# 可选:让Pixel Type非空的行保持Parent为空
df.loc[~pd.isnull(df['Pixel Type']), 'Parent'] = ''

print(df)

原代码的语法修正版(保留遍历方式)

如果你坚持要用iterrows()遍历行,需要修正缩进和逻辑:

import pandas as pd

df = pd.read_csv('your_file.csv')
df['Parent'] = ''

for index, row in df.iterrows():
    pixel_type = row['Pixel Type']
    # 当Pixel Type为空时,赋值当前行的Group/Name到Parent
    if pd.isnull(pixel_type):
        df.at[index, 'Parent'] = row['Pixel Group / Pixel Name']
    # 非空行保持Parent为空,无需额外操作

print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:02:52