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
相关产品推荐
相关产品推荐

