pandas读取csv生成dataframe时如何过滤全NaN的多余行与列
解决方案
方法1:读取时直接指定有效行列范围(已知有效行列数时最优)
你已经明确有73行16列有效数据,可直接通过read_csv的参数限定读取范围:
# 若有效数据从第1行(表头行)开始,前16列、前73行是有效内容 data_dataframe = pd.read_csv( csv_file, sep=',', nrows=73, # 仅读取前73行有效数据 usecols=range(16) # 仅读取前16列有效数据 )
如果有效数据不是从文件第一行开始,可补充skiprows=N参数,N为需要跳过的头部无效行数。
方法2:读取后清洗全空行列(未知有效行列数时使用)
如果无法提前确定有效行列的数量,可先读取全量数据,再批量删除全为NaN的行和列:
# 先读取全量数据 data_dataframe = pd.read_csv(csv_file, sep=',') # 先删除所有全为空值的列,再删除所有全为空值的行 data_dataframe = data_dataframe.dropna(axis=1, how='all').dropna(axis=0, how='all')
参数说明:
axis=1表示按列操作,axis=0表示按行操作how='all'表示仅当整行/整列所有值都为NaN时才删除,不会误删包含有效数据的行列
额外适配场景
如果csv文件是导出时带了多余的末尾分隔符、空行带空格等特殊情况,可补充以下参数优化读取逻辑:
- 加
skip_blank_lines=True:自动跳过完全空白的行 - 加
on_bad_lines='skip':自动跳过格式异常、列数不对的错误行
内容的提问来源于stack exchange,提问作者Atirag
相关产品推荐
相关产品推荐

