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

Python读取无列名含空列CSV:删除空列及列命名/访问问题

问题描述

我有一个80列、12500行的CSV文件,所有列都没有名称,还存在空列,数据示例如下:

8,1,,0,1993,146,,2,1,,,,,,,,,,2.1,0.65,0.15,0.65,19.1,,18.03,,,19.6,,,0.06,,,,,,19.1,19.6294717,19.36473585,0.06,,,,51.25,19.3,23.3,-0.04,-0.04,0.34,0.07,0.16,,,0.16,,,,,,,,,,,,,,,,,,15.3,7.8,11.55,58,100,79,15.4,8,11.7

我用data = pd.read_csv('CollectedData.csv')读取文件后,尝试用data = data.dropna()删除空列,结果发现这代码只会删行,不会删列。现在需要解决两个问题:怎么删除空列?怎么给特定列命名并访问这些列?


删除空列

dropna()默认是删除包含缺失值的行,要删除空列需要指定axis=1参数。如果只想删除完全为空值的列(大部分场景推荐用这个),再加上how='all':

# 删除所有全为空的列
data = data.dropna(axis=1, how='all')

# 若是需要删除任何包含空值的列(慎用,会把所有带缺失值的列都删掉)
# data = data.dropna(axis=1, how='any')

也可以通过筛选的方式直接保留非全空列:

data = data.loc[:, data.notna().any(axis=0)]

给特定列命名并访问

1. 读取文件时直接指定列名

如果提前知道要命名的列的位置,读文件时用names参数直接定义列名。比如给第0、3、4列分别命名为col_a、col_b、col_year,剩余列可以用空字符串占位适配80列的长度:

# 生成对应80列的列名列表
column_names = ['col_a', '', '', 'col_b', 'col_year'] + ['']*(80-5)
data = pd.read_csv('CollectedData.csv', names=column_names)

2. 读取文件后修改特定列名

先获取当前列名列表,修改指定索引位置的列名,再重新赋值给DataFrame的列属性:

current_cols = list(data.columns)
# 示例:把第5列(索引为5)命名为col_id,第18列命名为col_value
current_cols[5] = 'col_id'
current_cols[18] = 'col_value'
data.columns = current_cols

3. 访问命名后的列

直接通过列名即可访问对应列的数据:

# 用方括号语法获取列
col_year_data = data['col_year']
# 列名不含特殊字符时,也可以用点语法
col_year_data = data.col_year

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:45:40