使用pandas读取CSV时出现列名数量不匹配错误,请求协助排查
解决pandas read_csv usecols列名不匹配错误
你的代码在读取CSV时触发了「传入的名称数量与文件中的表头字段数量不匹配(CSV)」错误,代码如下:
TWEET_DATA = pd.read_csv("stemming.csv", usecols=['Id','clean']) TWEET_DATA.columns = ["label", "tweet"] TWEET_DATA.head()
从你提供的CSV截图可以看到,文件实际表头是Id,clean_tweet。
错误原因
最关键的问题是usecols里的列名和CSV实际表头不匹配:你写的'clean'在CSV里对应的是'clean_tweet',pandas找不到指定的clean列,直接触发了列数量不匹配的报错。另外,直接给columns硬赋值的方式也不够稳妥,后续如果读取列数和赋值列数不一致,也会出问题。
解决办法
- 先修正usecols的列名,和CSV表头完全对应:
# 把'clean'改成实际的列名'clean_tweet' TWEET_DATA = pd.read_csv("stemming.csv", usecols=['Id','clean_tweet'])
- 用更稳妥的方式重命名列,推荐两种写法:
- 写法一:读取完成后用
rename方法修改列名
TWEET_DATA = TWEET_DATA.rename(columns={'Id': 'label', 'clean_tweet': 'tweet'})- 写法二:读取时直接指定新列名(
header=0表示先识别原表头匹配列,再替换为新名称)
TWEET_DATA = pd.read_csv("stemming.csv", usecols=['Id','clean_tweet'], names=['label', 'tweet'], header=0) - 写法一:读取完成后用
内容的提问来源于stack exchange,提问作者Raffi El
相关产品推荐
相关产品推荐

