如何提取CSV中manager_id列为空的行且输出不包含表头
问题原因
你的现有代码存在3处核心错误,导致输出不符合预期:
- 调用
pd.read_csv时添加了header=None参数,会把CSV原有的表头行识别为普通数据行,列名变为默认的0/1/2/3,无法准确定位manager_id列 - 过滤逻辑
df.isnull().any(axis=1)是匹配任意列存在空值的行,并非你需要的仅匹配manager_id列为空的行 - 直接打印DataFrame会默认输出索引列和表头,就是你看到的开头的异常数字标识
实现方案
方案1:基于pandas实现
import pandas as pd # 读取CSV,自动识别表头,不额外设置索引 df = pd.read_csv('data.csv') # 仅筛选manager_id列为空的行 filter_df = df[df['manager_id'].isnull()] # 转换为CSV格式输出,关闭表头和索引显示 print(filter_df.to_csv(header=False, index=False))
方案2:纯Python原生实现(无需安装第三方库)
import csv with open('data.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) # 跳过第一行表头 next(reader) for row in reader: # manager_id为第三列,下标为2,判断值为空或者为NaN字符串 if row[2].strip() in ('', 'NaN'): print(','.join(row))
内容的提问来源于stack exchange,提问作者learningbtw
相关产品推荐
相关产品推荐

