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

CSV DataFrame删除空行后新增字段仍出现在已删行问题求助

问题原因分析

你遇到的问题核心是空行删除操作实际完全没有生效,你认为的"删除正常"是误判,所以新增列时依然会给所有原始行赋值,才会出现新增列值出现在"已删除行"的现象。具体错误点和修复方案如下:

核心错误1:删行的判断条件完全不成立

你写的判断逻辑if type(df.loc[i, 'ABC']) == ''存在根本性错误:

  • type()函数返回的是变量的类型对象(比如字符串的类型是<class 'str'>),永远不可能等于空字符串'',所以这个判断条件永远为False,没有任何行被真正删除。

核心错误2:遍历索引删行的逻辑本身存在缺陷

就算你修正了判断条件,直接遍历DataFrame原始索引的同时调用drop(inplace=True)删行,会导致索引动态变化后出现错位,大量行无法被正确遍历到,出现严重漏删问题,效率也极低。


修复方案

直接用Pandas向量化操作实现删空行逻辑,替代自己遍历的写法,同时修正原代码里的字符串拼接、转义符错误:

import pandas as pd
import datetime

# 假设df是你提前读取的全局DataFrame变量
def drop_empty():
    global df
    # 筛选ABC列去除首尾空格后不为空的行,重置索引避免后续操作出错
    df = df[df['ABC'].str.strip() != ''].reset_index(drop=True)
    # 可取消注释下方代码,打印确认删除前后的行数,验证删除是否生效
    # print(f"删除空行后剩余行数:{df.shape[0]}")

def make_csv():
    df['Map'] = 'MAP'
    df['Asset collection'] = 'Distribution'
    df['Asset collection address 1'] = 'Distribution'
    df['Asset collection address 2'] = 'Units1+2'
    df['Asset collection address 3'] = 'ind Est'
    df['Asset collection city'] = 'Coventry'
    df['Asset collection postcode'] = 'ABC DFG'
    df.to_csv('Clean_data_' + datetime.datetime.today().strftime('%m%d%Y%H%M%S') + '.csv', index=False, quotechar='"', sep=',')

drop_empty()
make_csv()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:12:03